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