Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: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. При использовании этого параметра для изменений, произошедших в результате операции обновления, возвращаются только строки, содержащие новые значения, записанные после обновления.
Всё обновление старое
Возвращает все изменения в пределах указанного диапазона номеров LSN. При использовании этого параметра для изменений, произошедших в результате операции обновления, возвращаются две строки, содержащие значения до и после обновления.
Возвращаемая таблица
| Имя столбца | Тип столбца | Description |
|---|---|---|
| __CDC_STARTLSN | binary(10) | Номер LSN-фиксации транзакции, связанный с этим изменением. Все изменения, зафиксированные в одной транзакции, имеют общий номер LSN-фиксации. |
| __CDC_SEQVAL | binary(10) | Значение последовательности, используемое для упорядочивания изменений строк в пределах транзакции. |
| <столбцы из @column_list> | Различается | Столбцы, которые определены в аргументе sp_cdc_generate_wrapper_function при вызове для создания скрипта, создающего функцию-оболочку. |
| __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_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 Эта ошибка должна быть обработана разработчиком.