<sys.fn_net_changes_capture_instance> (Transact-SQL)
Область применения: SQL Server
Оболочки для функций запросов net changes . Скрипты, необходимые для создания этих функций, создаются хранимой sys.sp_cdc_generate_wrapper_function
процедурой. Дополнительные сведения о хранимой процедуре, используемой для созданияsys.fn_net_changes_<capture_instance>
, см. в разделе sys.sp_cdc_generate_wrapper_function (Transact-SQL).
Соглашения о синтаксисе Transact-SQL
Синтаксис
fn_net_changes_<capture_instance> ('start_time', 'end_time', '<row_filter_option>' )
<capture_instance> ::= The name of the capture instance.
<row_filter_option> ::=
{ all
| all with mask
| all with merge
}
Аргументы
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
таблице изменений, имеющие значение __$start_lsn, а соответствующее время фиксации меньше или равно start_time .@closed_high_end_point = 0
В результирующий набор включены только строки в
cdc.<capture_instance>_CT
таблице изменений, имеющие значение __$start_lsn и соответствующее время фиксации, строго меньше 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
. Эта ошибка должна быть обработана разработчиком.
<row_filter_option ::= { все | все с маской> | все с слиянием }
Параметр, управляющий содержимым столбцов метаданных, а также строк, возвращаемых в результирующем наборе. Может быть одним из следующих:
all
Возвращает окончательное содержимое измененной строки в столбцах содержимого и операцию, необходимую, чтобы применить строку в столбце метаданных __CDC_OPERATION.
all with mask
Возвращает окончательное содержимое всех измененных строк в столбцах содержимого и операцию, необходимую, чтобы применить каждую строку в столбце метаданных __CDC_OPERATION. Если при формировании скрипта для создания функции-оболочки был указан флаг обновления, этот параметр необходим для заполнения маски обновления.
all with merge
Возвращает окончательное содержимое всех измененных строк в столбцах содержимого.
Столбец __CDC_OPERATION будет иметь одно из двух следующих значений.
D, если строка должна быть удалена.
M, если строка должна быть вставлена или обновлена.
Логика, которая определяет операцию, которую необходимо применить к конечному изменению, повышает сложность запроса. Данный параметр позволяет повысить производительность в тех случаях, когда различие между операциями вставки и обновления не требуется. Этот подход лучше всего подходит в целевых средах, где операция слияния доступна напрямую.
Возвращаемая таблица
Имя столбца | Тип столбца | Description |
---|---|---|
<столбцы из @column_list> | Различается | Столбцы, определенные в аргументе sp_cdc_generate_wrapper_function column_list, когда он вызывается для создания скрипта для создания оболочки. Если column_list имеет значение NULL, все отслеживаемые исходные столбцы будут отображаться в результирующем наборе. |
__CDC_OPERATION | nvarchar(2) | Код операции, указывающий операцию, необходимую для применения строки к целевой среде. Операция будет отличаться в зависимости от значения аргумента row_filter_option , предоставленного в следующем вызове: row_filter_option = "all", "все с маской" «D» — операция удаления «I» — операция вставки 'UN' — операция обновления row_filter_option = "все с слиянием" «D» — операция удаления 'M' — операция вставки либо обновления |
<столбцы из @update_flag_list> | bit | Битовый флаг, имя которого образуется добавлением _uflag к имени столбца. Флаг принимает значение, отличное от NULL, только если row_filter_option = "все с маской" и __CDC_OPERATION = UN. Если соответствующий столбец изменялся в окне запроса, флагу присваивается значение 1. В противном случае флагу присваивается значение 0. |
Замечания
Функция fn_net_changes_<capture_instance>
служит оболочкой для cdc.fn_cdc_get_net_changes_<capture_instance>
функции запроса. Хранимая sys.sp_cdc_generate_wrapper
процедура используется для создания скрипта для оболочки.
Функции-оболочки не создаются автоматически. Чтобы создать функции-оболочки, нужно выполнить две операции:
запустить хранимую процедуру, чтобы сформировать создающий оболочку скрипт;
выполнить скрипт, чтобы создать функцию-оболочку.
Функции-оболочки позволяют пользователям систематически запрашивать изменения, произошедшие в пределах интервала, ограниченного значениями datetime вместо значений LSN. Функции-оболочки выполняют все необходимые преобразования между указанными значениями даты и времени и значениями LSN, необходимыми внутренне в качестве аргументов в функции запроса. Если функции-оболочки используются последовательно для обработки потока информации об изменениях, данные не потеряются и не будут повторяться, если выполняется следующее условие: значение @end_time интервала, соответствующего одному вызову, передается как значение @start_time для последующего вызова.
Используя параметр @closed_high_end_point при создании скрипта, можно формировать оболочки для поддержки закрытой или открытой верхней границы в заданном окне запроса. Таким образом, можно решить, включаются ли в интервал записи, для которых время фиксации совпадает с верхней границей интервала извлекаемых данных. По умолчанию верхняя граница включается в интервал.
Результирующий набор, возвращаемый функцией оболочки net changes, возвращает только те отслеживаемые столбцы, которые находились в @column_list момент создания оболочки. Если аргумент @column_list имеет значение NULL, возвращаются все отслеживаемые исходные столбцы. За исходными столбцами следует столбец операции __CDC_OPERATION, который содержит 1 или 2 символа, определяющих операцию.
Затем к результирующему набору добавляются битовые флаги для каждого столбца, указанного параметром @update_flag_list. Для оболочки чистых изменений битовые флаги всегда будут иметь значение NULL, если @row_filter_option в вызове функции-оболочки используется значение "all" или "все с слиянием". @row_filter_option Если для параметра задано значение "все с маской", а __CDC_OPERATION имеет значение "D" или "I", значение флага также будет иметь значение NULL. Если __CDC_OPERATION имеет значение UN, флаг будет иметь значение 1 или 0, в зависимости от того, была ли операция net update вызвана изменением столбца.
Шаблон конфигурации отслеживания измененных данных "Создание экземпляров 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
Эта ошибка должна быть обработана разработчиком.