sys.sp_cdc_get_ddl_history (Transact-SQL)
適用対象: SQL Server
そのキャプチャ インスタンスに対して変更データ キャプチャが有効になっていたため、指定したキャプチャ インスタンスに関連付けられているデータ定義言語 (DDL) の変更履歴を返します。 変更データ キャプチャは、SQL Server のすべてのエディションで使用できるわけではありません。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2022 の各エディションとサポートされている機能」を参照してください。
構文
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 AdventureWorks2022;
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