Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: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.
Все в масках
Возвращает окончательное содержимое всех измененных строк в столбцах содержимого и операцию, необходимую, чтобы применить каждую строку в столбце метаданных __CDC_OPERATION. Если при формировании скрипта для создания функции-оболочки был указан флаг обновления, этот параметр необходим для заполнения маски обновления.
все с объединением
Возвращает окончательное содержимое всех измененных строк в столбцах содержимого.
Столбец __CDC_OPERATION будет иметь одно из двух следующих значений.
D, если строка должна быть удалена.
M, если строка должна быть вставлена или обновлена.
Логика, которая определяет операцию, которую необходимо применить к конечному изменению, повышает сложность запроса. Данный параметр позволяет повысить производительность в тех случаях, когда различие между операциями вставки и обновления не требуется. Этот подход лучше всего подходит в целевых средах, где операция слияния доступна напрямую.
Возвращаемая таблица
| Имя столбца | Тип столбца | Description |
|---|---|---|
| <столбцы из @column_list> | Различается | Столбцы, определенные в аргументе sp_cdc_generate_wrapper_function, когда он вызывается для создания скрипта для создания оболочки. Если 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_all_changes_<capture_instance> зависят от системных функций sys.fn_net_changes_<capture_instance>cdc.fn_cdc_get_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 Эта ошибка должна быть обработана разработчиком.