回答:
これを始める方法は次のようになります:
DECLARE @TableName VARCHAR(50)
DECLARE @ObjectID INT
SET @TableName = '' -- the name of the objects you want to investigate
SELECT @ObjectID = [id] FROM sysobjects WHERE name=@TableName
SELECT * FROM sysobjects WHERE name=@TableName
UNION
SELECT * FROM sysobjects WHERE id in (SELECT id FROM sysdepends WHERE depid= @ObjectID)
するsysdepends「テーブル」は、他に依存しているオブジェクトを教えてくれます。これは階層的であるため、nullの取得を開始するまでSysDependsを再帰的に実行する必要がある場合があります。sysdependsが不完全な場合があります。他にいくつかの提案がある記事を次に示します。
SYSOBJECTS「表には、」あなたは、データベース内のオブジェクトに関するいくつかのものを教えてくれます。タイプ(またxtype)列は、アイテムが何であるかを示します:ユーザー定義テーブル、ストアドプロシージャ、トリガーなど。
次に、sp_helptextでストアドプロシージャのテキストを出力します。これは、暗号化されたストアドプロシージャのテキストを再現しません。
完全で完全なソリューションには、特に暗号化されたストアドプロシージャとトリガーが関係する場合に、何かのプログラミングが含まれます。プログラムでDB内のアイテムを決定する1つのサンプル記事。SQL Server 2000のストアドプロシージャを復号化するために必要なデータ型はSQL Server 2005に表示されたため、SQL Server 2000でSQLを使用して独自の暗号化されたストアドプロシージャを復号化できませんでした(ただし、SQL Server 2005のSQLでそれらを復号化することはできました)。同じことが2005年から2008年への移行に当てはまっても、驚かないでください。数年前、私はストアドプロシージャの解読に興味を失いました。
オブジェクトをスクリプト化するために必要なすべての情報をプログラムで見つける方法を知っています。しかし、実際にスクリプトを作成するには、スクリプト生成コードを自分で作成する必要がある場合があります。
既存のオブジェクトのすべてを見つけるためのコードを書いている場合、googleを指す用語は「SQL Serverデータディクショナリ」です。
最初の例をいくつか紹介します。
特定のテーブルのすべての外部キー制約を見つけるには:
select * from information_schema.table_constraints where CONSTRAINT_TYPE = 'FOREIGN KEY'
and TABLE_NAME = 'aspnet_Roles'
特定のテーブルを参照するすべての外部キー制約を見つけるには:
select
sys.foreign_keys.name as key_name,
pt.name as parent_table_name,
pc.name as parent_column_name,
ct.name as referenced_table_name,
cc.name as referenced_colum_name
from sys.foreign_key_columns
inner join sys.foreign_keys on sys.foreign_key_columns.constraint_object_id = sys.foreign_keys.object_id
inner join sys.tables pt on sys.foreign_key_columns.parent_object_id = pt.object_id
inner join sys.tables ct on sys.foreign_key_columns.referenced_object_id = ct.object_id
inner join sys.columns pc on sys.foreign_key_columns.parent_object_id = pc.object_id and sys.foreign_key_columns.parent_column_id = pc.column_id
inner join sys.columns cc on sys.foreign_key_columns.referenced_object_id = cc.object_id and sys.foreign_key_columns.referenced_column_id = cc.Column_id
where ct.name = 'aspnet_Applications'