sys.sp_cdc_get_ddl_history (Transact-SQL)
指定されたキャプチャ インスタンスに関連付けられたデータ定義言語 (DDL) の変更履歴を返します。変更履歴は、指定されたキャプチャ インスタンスに対して変更データ キャプチャが有効にされた時点からの履歴になります。変更データ キャプチャは、SQL Server 2008 Enterprise Edition、Developer Edition、および Evaluation Edition でのみ使用できます。
構文
sys.sp_cdc_get_ddl_history [ @capture_instance = ] 'capture_instance'
引数
- [ @capture_instance = ] 'capture_instance'
ソース テーブルに関連付けられたキャプチャ インスタンスの名前を指定します。capture_instance のデータ型は sysname で、NULL 値は許可されません。
リターン コードの値
0 (成功) または 1 (失敗)
結果セット
列名 |
データ型 |
説明 |
---|---|---|
source_schema |
sysname |
ソース テーブルのスキーマ名です。 |
source_table |
sysname |
ソース テーブルの名前です。 |
capture_instance |
sysname |
キャプチャ インスタンスの名前です。 |
required_column_update |
bit |
DDL の変更で、ソース列に対して行われたデータ型の変更を反映するために、変更テーブルの列を更新する必要があったことを示します。 |
ddl_command |
nvarchar(max) |
ソース テーブルに適用された DDL ステートメントです。 |
ddl_lsn |
binary(10) |
DDL の変更に関連付けられたログ シーケンス番号 (LSN) です。 |
ddl_time |
datetime |
DDL の変更に関連付けられた時刻です。 |
説明
ソース テーブルの列構造の変更を伴う DDL 修正 (列の追加や削除、既存の列のデータ型の変更など) は cdc.ddl_history テーブルで管理されます。このストアド プロシージャでは、こうした変更をレポートできます。cdc.ddl_history のエントリは、キャプチャ プロセスで、ログから DDL トランザクションが読み取られた時点で作成されます。
権限
データベースのすべてのキャプチャ インスタンスの行を取得するには、db_owner 固定データベース ロールのメンバーシップが必要です。それ以外のすべてのユーザーについては、ソース テーブルのすべてのキャプチャ対象列に対する SELECT 権限が必要です。さらに、キャプチャ インスタンスのゲーティング ロールが定義されている場合は、そのデータベース ロールのメンバーシップが必要です。
例
次の例では、ソース テーブル HumanResources.Employee に列を追加した後、sys.sp_cdc_get_ddl_history ストアド プロシージャを実行して、キャプチャ インスタンス HumanResources_Employee に関連付けられたソース テーブルに適用される DDL の変更をレポートしています。
USE AdventureWorks2008R2;
GO
ALTER TABLE HumanResources.Employee
ADD Test_Column int NULL;
GO
-- Pause 10 seconds to allow the event to be logged.
WAITFOR DELAY '00:00:10';
GO
EXECUTE sys.sp_cdc_get_ddl_history
@capture_instance = 'HumanResources_Employee';
GO