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 更改关联的时间。 |
注释
cdc.ddl_history 表中将保留对源表的列结构进行更改的 DDL 修改,例如添加列、删除列或更改现有列的数据类型。 您可使用此存储过程报告以上更改。 当捕获进程读取日志中的 DDL 事务时,将向 cdc.ddl_history 中添加项。
权限
要求拥有 db_owner 固定数据库角色的成员身份以返回针对数据库中所有捕获实例的行。 对于所有其他用户,要求对源表中的所有已捕获列具有 SELECT 权限;如果已定义捕获实例的访问控制角色,则还要求具有该数据库角色的成员身份。
示例
以下示例将列添加到源表 HumanResources.Employee 中,然后运行 sys.sp_cdc_get_ddl_history 存储过程来报告应用到与捕获实例 HumanResources_Employee 关联的源表的 DDL 更改。
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