<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
процедура используется для создания скрипта для создания оболочки.
Функции-оболочки не создаются автоматически. Чтобы создать функции-оболочки, нужно выполнить две операции:
запустить хранимую процедуру, чтобы сформировать создающий оболочку скрипт;
выполнить скрипт, чтобы создать функцию-оболочку.
Функции-оболочки позволяют пользователям систематически запрашивать изменения, произошедшие в пределах интервала, ограниченного значениями 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
Эта ошибка должна быть обработана разработчиком.