capture_instance > CDC.fn_cdc_get_all_changes_ < (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии)

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

Данная функция перечисления создается, если для исходной таблицы включена система отслеживания измененных данных. Имя функции является производным и использует формат cdc.fn_cdc_get_all_changes_<capture_instance> , где capture_instance — значение, заданное для экземпляра системы отслеживания, когда в исходной таблице включена система отслеживания измененных данных.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

  
cdc.fn_cdc_get_all_changes_capture_instance ( from_lsn , to_lsn , '<row_filter_option>' )  
  
<row_filter_option> ::=  
{ all  
 | all update old  
}  

Аргументы

from_lsn

Значение нижней границы диапазона номеров LSN, включенных в результирующий набор. from_lsn является двоичным (10).

В результирующий набор включаются только строки в таблице CDC. [capture_instance]_CT таблицы изменений со значением __ $ start_lsn больше или равно from_lsn .

to_lsn

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

В результирующий набор включаются только строки в таблице CDC. [capture_instance]_CT таблицы изменений со значением __ $ start_lsn больше или равно from_lsn и меньше или равно to_lsn .

<row_filter_option>:: = {ALL | все обновление Old}

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

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

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

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

Таблица возвращена

Имя столбца Тип данных Описание
__$start_lsn binary(10) Номер LSN фиксации, связанный с изменением, хранящим последовательность фиксации данного изменения. Все изменения, зафиксированные в одной транзакции, имеют общий номер LSN фиксации.
__$seqval binary(10) Последовательное значение, используемое для упорядочивания изменений строк в пределах транзакции.
__$operation int Определяет операцию языка обработки данных (DML), необходимую для применения строки информации об изменениях к целевому источнику данных. Может применяться один из перечисленных ниже типов.

1 = удаление

2 = вставка

3 = обновление (значения отслеживаемого столбца перед операцией обновления). Данное значение используется, только если параметр фильтрации строк равен «all update old».

4 = обновление (значения отслеживаемого столбца после операции обновления).
__$update_mask varbinary(128) Битовая маска, в которой каждому отслеживаемому столбцу, определенному для экземпляра отслеживания, соответствует один бит. Для всех определенных битов задано значение 1, если __ $ operation = 1 или 2. Если __ $ operation = 3 или 4, то только биты, соответствующие измененным столбцам, устанавливаются в 1.
<captured source table columns> непостоянно Оставшиеся столбцы, возвращенные функцией, представляют собой отслеживаемые столбцы, определенные в момент создания экземпляра отслеживания. Если в списке отслеживаемых столбцов не указано ни одного столбца, возвращаются все столбцы в исходной таблице.

Разрешения

Требуется членство в предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner . Всем остальным пользователям необходимо разрешение SELECT для всех отслеживаемых столбцов в исходной таблице. Кроме того, если для экземпляра отслеживания была определена шлюзовая роль, требуется членство в этой роли базы данных. Если вызывающий объект не имеет разрешения на просмотр исходных данных, функция возвращает ошибку 229 The SELECT permission was denied on the object 'fn_cdc_get_all_changes_...', database '\<DatabaseName>', schema 'cdc'.

Комментарии

Столбцам типа данных Image, Text и ntext всегда присваивается значение null, если __ $ operation = 1 или __ $ operation = 3. Столбцам типа данных varbinary (max), varchar (max) или nvarchar (max) присваивается значение null, если __ $ operation = 3, если столбец не изменился во время обновления. Когда __ $ operation = 1, этим столбцам присваиваются значения во время удаления. Вычисляемые столбцы, которые включены в экземпляр системы отслеживания, всегда имеют значение NULL.

Если указанный диапазон номеров LSN не подходит для вызова cdc.fn_cdc_get_all_changes_<capture_instance> или cdc.fn_cdc_get_net_changes_<capture_instance> , ожидается ошибка 313. 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 для обхода можно найти по адресу реплталк на GitHub.

Примеры

Доступно несколько SQL Server Management Studio шаблонов, демонстрирующих использование функций запросов системы отслеживания измененных данных. Эти шаблоны доступны в меню вид в Среда Management Studio . Дополнительные сведения см. в разделе Обозреватель шаблонов.

Этот пример иллюстрирует шаблон Enumerate All Changes for Valid Range Template. В нем функция cdc.fn_cdc_get_all_changes_HR_Department сообщает обо всех текущих доступных изменениях для экземпляра системы отслеживания HR_Department, который определен для исходной таблицы HumanResources.Department в базе данных AdventureWorks2012.

-- ========  
-- Enumerate All Changes for Valid Range Template  
-- ========  
USE AdventureWorks2012;  
GO  
  
DECLARE @from_lsn binary(10), @to_lsn binary(10);  
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_Department');  
SET @to_lsn   = sys.fn_cdc_get_max_lsn();  
SELECT * FROM cdc.fn_cdc_get_all_changes_HR_Department  
  (@from_lsn, @to_lsn, N'all');  
GO  

См. также: