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


<sys.fn_all_changes_capture_instance> (Transact-SQL)

Применимо к:SQL Server

Оболочки для всех функций запросов изменений . Скрипты, необходимые для создания этих функций, создаются хранимой sys.sp_cdc_generate_wrapper_function процедурой. Дополнительные сведения о хранимой процедуре, используемой для созданияsys.fn_all_changes_<capture_instance>, см. в разделе sys.sp_cdc_generate_wrapper_function (Transact-SQL).

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

Синтаксис

fn_all_changes_<capture_instance> ('start_time' ,'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all update old  
}  

Аргументы

start_time

Значение даты и времени , представляющее низкую конечную точку диапазона записей таблицы изменений для включения в результирующий набор.

В результирующий набор включены только строки в cdc.<capture_instance>_CT таблице изменений, имеющие связанное время фиксации, превышающие start_time .

Если для этого аргумента задано значение NULL, нижняя конечная точка диапазона запроса будет соответствовать нижней конечной точке допустимого диапазона для экземпляра системы отслеживания.

Если значение параметра @start_time или @end_time находится за рамками времени наименьшего или наибольшего номера LSN, то выполнение созданных функций-оболочек приведет к ошибке 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Эта ошибка должна быть обработана разработчиком.

end_time

Значение даты и времени , представляющее высокую конечную точку диапазона записей таблицы изменений для включения в результирующий набор.

Этот параметр может принимать одно из двух возможных значений в зависимости от значения, выбранного @closed_high_end_point для sys.sp_cdc_generate_wrapper_function создания скрипта создания скрипта для функции-оболочки:

  • @closed_high_end_point = 1

    В результирующий набор включены только строки в cdc.<capture_instance>_CT таблице изменений, которые имеют связанное время фиксации меньше или равно end_time.

  • @closed_high_end_point = 0

    В результирующий набор включены только строки в cdc.capture_instance_CT таблице изменений, имеющие связанное время фиксации, строго меньше end_time.

Если для этого аргумента задано значение NULL, верхняя конечная точка диапазона запроса будет соответствовать верхней конечной точке допустимого диапазона для экземпляра системы отслеживания.

Если значение параметра @start_time или @end_time находится за рамками времени наименьшего или наибольшего номера LSN, то выполнение созданных функций-оболочек приведет к ошибке 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Эта ошибка должна быть обработана разработчиком.

<> row_filter_option ::= { все | все обновления старых }

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

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

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

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

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

Столбец Тип столбца Description
__CDC_STARTLSN binary(10) Номер LSN-фиксации транзакции, связанный с этим изменением. Все изменения, зафиксированные в одной транзакции, имеют общий номер LSN-фиксации.
__CDC_SEQVAL binary(10) Значение последовательности, используемое для упорядочивания изменений строк в пределах транзакции.
<столбцы из @column_list> Различается Столбцы, которые определены в аргументе sp_cdc_generate_wrapper_function column_list при вызове для создания скрипта, создающего функцию-оболочку.
__CDC_OPERATION nvarchar(2) Код операции, указывающий операцию, необходимую для применения строки к целевой среде. Он зависит от значения аргумента row_filter_option , предоставленного в вызове:

row_filter_option = "все"

«D» — операция удаления

«I» — операция вставки

«UN» — новые значения операции обновления

row_filter_option = "все обновления старых"

«D» — операция удаления

«I» — операция вставки

«UN» — новые значения операции обновления

«UO» — старые значения операции обновления
<столбцы из @update_flag_list> bit Битовый флаг, имя которого образуется добавлением «_uflag» к имени столбца. Флаг всегда имеет значение NULL, если __CDC_OPERATION имеет значение "D", "I", "UO". Если __CDC_OPERATION имеет значение UN, оно имеет значение 1, если обновление создало изменение соответствующего столбца. В противном случае флагу присваивается значение 0.

Замечания

Функция fn_all_changes_<capture_instance> служит оболочкой для cdc.fn_cdc_get_all_changes_<capture_instance> функции запроса. Хранимая sys.sp_cdc_generate_wrapper процедура используется для создания скрипта для создания оболочки.

Функции-оболочки не создаются автоматически. Чтобы создать функции-оболочки, нужно выполнить две операции:

  1. запустить хранимую процедуру, чтобы сформировать создающий оболочку скрипт;

  2. выполнить скрипт, чтобы создать функцию-оболочку.

Функции-оболочки позволяют пользователям систематически запрашивать изменения, произошедшие в пределах интервала, ограниченного значениями datetime вместо значений LSN. Функции-оболочки выполняют все необходимые преобразования между указанными значениями даты и времени и значениями LSN, необходимыми внутренне в качестве аргументов в функции запроса. Если функции-оболочки используются последовательно для обработки потока информации об изменениях, данные не потеряются и не будут повторяться, если выполняется следующее условие: значение @end_time интервала, соответствующего одному вызову, передается как значение @start_time для последующего вызова.

Используя параметр @closed_high_end_point при создании скрипта, можно формировать оболочки для поддержки закрытой или открытой верхней границы в заданном окне запроса. Таким образом, можно решить, включаются ли в интервал записи, для которых время фиксации совпадает с верхней границей интервала извлекаемых данных. По умолчанию верхняя граница включается в интервал.

Результирующий набор, возвращаемый функцией-оболочкой всех изменений , возвращает столбцы __$start_lsn и __$seqval таблицы изменений в виде столбцов __CDC_STARTLSN и __CDC_SEQVAL соответственно. Он следует только тем отслеживаемым столбцам, которые появились в параметре @column_list при создании оболочки. Если @column_list имеет значение NULL, возвращаются все отслеживаемые исходные столбцы. За исходными столбцами следует столбец операции __CDC_OPERATION, который содержит 1 или 2 символа, определяющих операцию.

Затем к результирующему набору добавляются битовые флаги для каждого столбца, указанного параметром @update_flag_list. При всех изменениях битовые флаги всегда будут иметь значение NULL, если __CDC_OPERATION — D, I или UO. Если __CDC_OPERATION имеет значение UN, флаг будет иметь значение 1 или 0 в зависимости от того, была ли операция обновления вызвана изменением столбца.

Шаблон конфигурации отслеживания измененных данных "Создание экземпляров TVFs оболочки CDC для схемы" показывает, как использовать sp_cdc_generate_wrapper_function хранимую процедуру для получения скриптов CREATE для всех функций оболочки для определенных функций запроса схемы. Затем шаблон создает эти скрипты. Дополнительные сведения о шаблонах см . в обозревателе шаблонов.

Функции-оболочки и sys.fn_net_changes_<capture_instance> зависят от системных функций cdc.fn_cdc_get_all_changes_<capture_instance>sys.fn_all_changes_<capture_instance> иcdc.fn_cdc_get_net_changes_<capture_instance>. Ошибка 313 ожидается, если диапазон LSN не подходит при вызове cdc.fn_cdc_get_all_changes_<capture_instance> или cdc.fn_cdc_get_net_changes_<capture_instance>. lsn_value Если параметр выходит за пределы времени наименьшего LSN или самого высокого LSN, выполнение этих функций возвращается в ошибке 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function Эта ошибка должна быть обработана разработчиком. Пример T-SQL для обходного решения можно найти в ReplTalk на сайте GitHub.

См. также