sys.sp_cdc_get_ddl_history (Transact-SQL)
傳回自從針對指定的擷取執行個體啟用變更資料擷取以來,與該擷取執行個體相關聯的資料定義語言 (DDL) 變更記錄。 並非每個 Microsoft SQL Server 版本中都無法異動資料擷取。 如需 SQL Server 版本所支援功能的清單,請參閱<SQL Server 2014 版本支援的功能>。
適用於:SQL Server (SQL Server 2008 至目前版本)。 |
語法
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 預存程序來報告 DDL 變更 (套用至與 HumanResources_Employee 擷取執行個體相關聯的來源資料表)。
USE AdventureWorks2012;
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