次の方法で共有


sys.sp_cdc_get_ddl_history (Transact-SQL)

適用対象: SQL Server

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

Transact-SQL 構文表記規則

構文

sys.sp_cdc_get_ddl_history [ @capture_instance = ] 'capture_instance'
[ ; ]

引数

[ @capture_instance = ] 'capture_instance'

ソース テーブルに関連付けられているキャプチャ インスタンスの名前。 @capture_instancesysname であり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