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