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)

Регистрационный номер транзакции в журнале (LSN), связанный с изменением DDL.

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 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