Поделиться через


sys.sp_cdc_get_ddl_history (Transact-SQL)

Возвращает журнал изменений языка описания данных DDL, связанный с заданным экземпляром записи, со времени включения системы отслеживания информации об изменениях данных для этого экземпляра записи. Система отслеживания измененных данных доступна не во всех выпусках Microsoft SQL Server. Список функций, поддерживаемых в разных выпусках SQL Server, см. в разделе Функции, поддерживаемые различными выпусками SQL Server 2014.

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Cинтаксические обозначения в 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 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)