sys.sp_cdc_get_ddl_history (Transact-SQL)
Возвращает журнал изменений языка DDL, связанный с заданным экземпляром записи, со времени включения системы отслеживания измененных данных для этого экземпляра записи. Система отслеживания измененных данных доступна только в следующих выпусках SQL Server 2008: Enterprise Edition, Developer Edition и Evaluation Edition.
Синтаксис
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 AdventureWorks2008R2;
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
См. также