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


sys.sp_cdc_get_ddl_history (Transact-SQL)

Область применения: SQL Server

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

sys.sp_cdc_get_ddl_history [ @capture_instance = ] 'capture_instance'
[ ; ]

Аргументы

[ @capture_instance = ] 'capture_instance'

Имя экземпляра записи, связанного с исходной таблицей. @capture_instance является sysname и не может бытьNULL.

Значения кода возврата

0 (успешно) или 1 (сбой).

Результирующий набор

Имя столбца Тип данных Description
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 AdventureWorks2022;
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