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


cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)

Возвращает одну строку для каждого изменения в исходной таблице в заданном диапазоне номеров LSN. Если за истекший период исходная строка претерпевала несколько изменений, в результирующем наборе отображается каждое из них. Помимо данных об изменениях, результирующий набор содержит четыре столбца метаданных, предоставляющих информацию, необходимую для применения изменений к другим источникам данных. Параметры фильтрации строк управляют как содержимым столбцов метаданных, так и строк, возвращаемых в результирующем наборе. Если параметру фильтрации строк присвоено значение «all», то каждое изменение фиксируется в виде отдельной строки. Если указано значение «all update old», то каждая операция обновления представляется в виде двух строк: одна строка содержит значения отслеживаемых столбцов до их обновления, вторая — после обновления.

Данная функция перечисления создается, если для исходной таблицы включена система отслеживания измененных данных. Имя функции является производным в формате **cdc.fn_cdc_get_all_changes_**capture_instance, где capture_instance является значением, указывающим экземпляр отслеживания, если для исходной таблицы включена система отслеживания измененных данных.

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

Значок ссылки на раздел Cинтаксические обозначения в Transact-SQL

Синтаксис

cdc.fn_cdc_get_all_changes_capture_instance ( from_lsn , to_lsn , '<row_filter_option>' )

<row_filter_option> ::=
{ all
 | all update old
}

Аргументы

  • from_lsn
    Значение нижней границы диапазона номеров LSN, включенных в результирующий набор. Аргумент from_lsn имеет тип binary(10).

    В результирующий набор включаются только строки в таблице изменений cdc.[экземпляр_отслеживания]_CT со значением __$start_lsn, большим или равным from_lsn.

  • to_lsn
    Значение верхней границы диапазона номеров LSN, включенных в результирующий набор. Аргумент to_lsn имеет тип binary(10).

    В результирующий набор включаются только строки в таблице изменений cdc.[экземпляр_отслеживания]_CT со значением __$start_lsn, меньшим или равным from_lsn или равным to_lsn .

  • <row_filter_option> ::= { all | all update old }
    Параметр, управляющий содержимым столбцов метаданных, а также строк, возвращаемых в результирующем наборе.

    Может быть одним из следующих:

    • all
      Возвращает все изменения в пределах указанного диапазона номеров LSN. При использовании этого параметра для изменений, произошедших в результате операции обновления, возвращаются строки, содержащие только новые значения, записанные после обновления.

    • all update old
      Возвращает все изменения в пределах указанного диапазона номеров LSN. Если указан этот параметр, то для изменений, произошедших в результате операции обновления, возвращаются строки, содержащие как старые значения столбцов, так и новые значения, записанные после обновления.

Возвращаемая таблица

Имя столбца

Тип данных

Описание

__$start_lsn

binary(10)

Номер LSN фиксации, связанный с изменением, хранящим последовательность фиксации данного изменения. Все изменения, зафиксированные в одной транзакции, имеют общий номер LSN фиксации.

__$seqval

binary(10)

Последовательное значение, используемое для упорядочивания изменений строк в пределах транзакции.

__$operation

int

Определяет операцию языка обработки данных (DML), необходимую для применения строки измененных данных к целевому источнику данных. Может быть одним из следующих:

1 = удаление

2 = вставка

3 = обновление (значения отслеживаемого столбца перед операцией обновления). Данное значение используется, только если параметр фильтрации строк равен «all update old».

4 = обновление (значения отслеживаемого столбца после операции обновления).

__$update_mask

varbinary(128)

Битовая маска, в которой каждому отслеживаемому столбцу, определенному для экземпляра отслеживания, соответствует один бит. В этом значении все определенные биты установлены в значение 1, если __$operation = 1 или 2. Если __$operation = 3 или 4, то в значение 1 устанавливаются только биты, соответствующие измененным столбцам.

<столбцы отслеживаемой исходной таблицы>

непостоянно

Оставшиеся столбцы, возвращенные функцией, представляют собой отслеживаемые столбцы, определенные в момент создания экземпляра отслеживания. Если в списке отслеживаемых столбцов не указано ни одного столбца, возвращаются все столбцы в исходной таблице.

Разрешения

Требуется членство в предопределенной роли сервера sysadmin или в предопределенной роли базы данных db_owner. Всем остальным пользователям необходимо разрешение SELECT для всех отслеживаемых столбцов в исходной таблице. Кроме того, если для экземпляра отслеживания была определена шлюзовая роль, требуется членство в этой роли базы данных. Если вызывающий объект не имеет разрешения на просмотр исходных данных, то функция вернет ошибку 229 (Запрещено разрешение SELECT на объект "fn_cdc_get_all_changes_..." базы данных "<ИмяБазыДанных>" схемы "cdc".).

Замечания

Если указанный диапазон номеров LSN выходит за пределы временной шкалы отслеживания изменений в экземпляре системы отслеживания, то функция возвращает ошибку 208 (Для процедуры или функции cdc.fn_cdc_get_all_changes указано недостаточное количество аргументов).

Столбцы типов данных image, text и ntext всегда имеют значение NULL, если __$operation = 1 или __$operation = 3. Столбцы типов данных varbinary(max), varchar(max) или nvarchar(max) имеют значение NULL, когда __$operation = 3, если столбец не изменен во время обновления. Когда __$operation = 1, этим столбцам присваиваются значения в момент удаления. Вычисляемые столбцы, которые включены в экземпляр системы отслеживания, всегда имеют значение NULL.

Примеры

Несколько шаблонов среды Среда SQL Server Management Studio показывают, каким образом следует пользоваться функциями запросов к системе отслеживания измененных данных. Эти шаблоны доступны в меню Вид среды Среда Management Studio. Дополнительные сведения см. в разделе Обозреватель шаблонов.

Этот пример иллюстрирует шаблон Enumerate All Changes for Valid Range Template. В нем функция cdc.fn_cdc_get_all_changes_HR_Department сообщает обо всех текущих доступных изменениях для экземпляра отслеживания HR_Department, который определен для исходной таблицы HumanResources.Department в базе данных AdventureWorks2012 .

-- ==================================================
-- Enumerate All Changes for Valid Range Template
-- ==================================================
USE AdventureWorks2012;
GO

DECLARE @from_lsn binary(10), @to_lsn binary(10);
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_Department');
SET @to_lsn   = sys.fn_cdc_get_max_lsn();
SELECT * FROM cdc.fn_cdc_get_all_changes_HR_Department
  (@from_lsn, @to_lsn, N'all');
GO

См. также

Справочник

cdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL)

sys.fn_cdc_map_time_to_lsn (Transact-SQL)

sys.sp_cdc_get_ddl_history (Transact-SQL)

sys.sp_cdc_get_captured_columns (Transact-SQL)

sys.sp_cdc_help_change_data_capture (Transact-SQL)

Основные понятия

Об отслеживании измененных данных (SQL Server)