sys.sp_cdc_get_ddl_history (Transact-SQL)

适用于:SQL Server (所有受支持的版本)

返回自对指定的捕获实例启用变更数据捕获后与该捕获实例关联的数据定义语言 (DDL) 更改历史记录。 更改数据捕获在 Microsoft SQL Server的每个版本中都不可用。 有关 SQL Server各版本支持的功能列表,请参阅 SQL Server 2016 各个版本支持的功能

主题链接图标Transact-SQL 语法约定

语法

  
sys.sp_cdc_get_ddl_history [ @capture_instance = ] 'capture_instance'  

参数

[ = ] @capture_instance 'capture_instance'
与源表关联的捕获实例的名称。 capture_instancesysname ,不能为 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 表中维护。 您可使用此存储过程报告以上更改。 当捕获进程读取日志中的 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  

另请参阅

sys.sp_cdc_help_change_data_capture (Transact-SQL)