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_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