cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)
Возвращает одну строку для каждого изменения в исходной таблице в заданном диапазоне номеров LSN. Если за истекший период исходная строка претерпевала несколько изменений, в результирующем наборе отображается каждое из них. Помимо данных об изменениях, результирующий набор содержит четыре столбца метаданных, предоставляющих информацию, необходимую для применения изменений к другим источникам данных. Параметры фильтрации строк управляют как содержимым столбцов метаданных, так и строк, возвращаемых в результирующем наборе. Если параметру фильтрации строк присвоено значение «all», то каждое изменение фиксируется в виде отдельной строки. Если указано значение «all update old», то каждая операция обновления представляется в виде двух строк: одна строка содержит значения отслеживаемых столбцов до их обновления, вторая — после обновления.
Данная функция перечисления создается, если для исходной таблицы включена система отслеживания измененных данных. Имя функции является составным и использует формат **cdc.fn_cdc_get_all_changes_**экземпляр_отслеживания, где экземпляр_отслеживания является значением, указывающим экземпляр отслеживания, если для исходной таблицы включена система отслеживания измененных данных.
Синтаксис
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 имеет тип binary(10).В результирующий набор включаются только строки в таблице изменений cdc.[экземпляр_отслеживания]_CT со значением __$start_lsn, большим или равным from_lsn.
to_lsn
Значение верхней границы диапазона номеров LSN, включенных в результирующий набор. Аргумент to_lsn имеет тип binary(10).В результирующий набор включаются только строки в таблице изменений cdc.[экземпляр_отслеживания]_CT со значением __$start_lsn, меньшим или равным from_lsn или равным to_lsn .
<row_filter_option> ::= { all | all update old }
Параметр, управляющий содержимым столбцов метаданных, а также строк, возвращаемых в результирующем наборе.Может быть одним из следующих:
all
Возвращает все изменения в пределах указанного диапазона номеров 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 устанавливаются только биты, соответствующие измененным столбцам. |
<столбцы отслеживаемой исходной таблицы> |
непостоянно |
Оставшиеся столбцы, возвращенные функцией, представляют собой отслеживаемые столбцы, определенные в момент создания экземпляра отслеживания. Если в списке отслеживаемых столбцов не указано ни одного столбца, возвращаются все столбцы в исходной таблице. |
Разрешения
Требуется членство в предопределенной роли сервера sysadmin или в предопределенной роли базы данных db_owner. Всем остальным пользователям необходимо разрешение SELECT для всех отслеживаемых столбцов в исходной таблице. Кроме того, если для экземпляра отслеживания была определена шлюзовая роль, требуется членство в этой роли базы данных. Если вызывающий объект не имеет разрешения на просмотр исходных данных, то функция вернет ошибку 229 (Запрещено разрешение SELECT на объект "fn_cdc_get_all_changes_..." базы данных "<ИмяБазыДанных>" схемы "cdc".).
Замечания
Если указанный диапазон номеров LSN выходит за пределы временной шкалы отслеживания изменений в экземпляре системы отслеживания, то функция возвращает ошибку 208 (Для процедуры или функции cdc.fn_cdc_get_all_changes указано недостаточное количество аргументов).
Столбцы типов данных image, text и ntext всегда имеют значение NULL, если __$operation = 1 или __$operation = 3. Столбцы типов данных varbinary(max), varchar(max) или nvarchar(max) имеют значение NULL, когда __$operation = 3, если столбец не изменен во время обновления. Когда __$operation = 1, этим столбцам присваиваются значения в момент удаления. Вычисляемые столбцы, которые включены в экземпляр системы отслеживания, всегда имеют значение NULL.
Примеры
Несколько шаблонов среды SQL Server Management Studio показывают, каким образом следует пользоваться функциями запросов к системе отслеживания измененных данных. Эти шаблоны доступны в меню Вид среды Management Studio. Дополнительные сведения см. в разделе Использование шаблонов в среде SQL Server Management Studio.
Этот пример иллюстрирует шаблон Enumerate All Changes for Valid Range Template. В нем функция cdc.fn_cdc_get_all_changes_HR_Department сообщает обо всех текущих доступных изменениях для экземпляра системы отслеживания HR_Department, который определен для исходной таблицы HumanResources.Department в базе данных AdventureWorks.
-- ==================================================
-- Enumerate All Changes for Valid Range Template
-- ==================================================
USE AdventureWorks
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
См. также