sys.sp_cdc_get_ddl_history (Transact-SQL)

返回自对指定的捕获实例启用变更数据捕获后与该捕获实例关联的数据定义语言 (DDL) 更改历史记录。变更数据捕获仅在 SQL Server 2008 Enterprise Edition、Developer Edition 和 Evaluation Edition 中可用。

主题链接图标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 更改关联的时间。

注释

cdc.ddl_history 表中将保留对源表的列结构进行更改的 DDL 修改,例如添加列、删除列或更改现有列的数据类型。您可使用此存储过程报告以上更改。当捕获进程读取日志中的 DDL 事务时,将向 cdc.ddl_history 中添加项。

权限

要求拥有 db_owner 固定数据库角色的成员身份以返回针对数据库中所有捕获实例的行。对于所有其他用户,要求对源表中的所有已捕获列具有 SELECT 权限;如果已定义捕获实例的访问控制角色,则还要求具有该数据库角色的成员身份。

示例

以下示例将列添加到源表 HumanResources.Employee 中,然后运行 sys.sp_cdc_get_ddl_history 存储过程来报告应用到与捕获实例 HumanResources_Employee 关联的源表的 DDL 更改。

USE AdventureWorks;
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