CDC.fn_cdc_get_all_changes_<capture_instance> (języka Transact-SQL)
Zwraca jeden wiersz dla każdej zmiany zastosowane źródło tabela określonej numer sekwencyjny dziennika (LSN) zakres.Wiersza źródło gdyby wiele zmian w przedziale, każda zmiana jest reprezentowany w zwracane zestaw wyników.Oprócz zwracania Zmień dane, cztery kolumny metadane zawierają informacje potrzebne do zastosowania zmian do danych innego źródło.Opcje filtrowania wierszy określają zawartość kolumny metadane , jak również wierszy zwracanych w zestaw wyników.Po 'wszystkie' określono opcję Filtr wiersza, każda zmiana ma dokładnie jeden wiersz, aby zidentyfikować zmianę.Po "wszystkich aktualizacji stare" Określona opcja, operacje aktualizacji są przedstawiane jako dwa wiersze: jeden zawierający wartości przechwycone kolumny przed aktualizacji, a drugi zawierający wartości kolumny przechwycone po aktualizacji.
Wyliczanie funkcja jest tworzony w czas włączenia do przechwytywania danych zmiana źródło tabela .Nazwa funkcja wywodzi się i korzysta z formatu **cdc.fn_cdc_get_all_changes_**capture_instance gdzie capture_instance jest wartość określona dla przechwytywania wystąpienie po włączeniutabela źródłow celu zmiany przechwytywania danych.
Składnia
cdc.fn_cdc_get_all_changes_capture_instance ( from_lsn , to_lsn , '<row_filter_option>' )
<row_filter_option> ::=
{ all
| all update old
}
Argumenty
from_lsn
Reprezentuje niskie końcowy LSNzakres w zestaw wynikówwartość LSN . from_lsnis binary(10).Tylko wiersze w ZOZ. [capture_instance] _CT zmian w tabela z wartością w __$ start_lsn równe lub większe niż from_lsn znajdują się w zestaw wyników.
to_lsn
Reprezentuje wysokie końcowy LSNzakres w zestaw wynikówwartość LSN . to_lsnis binary(10).Tylko wiersze w ZOZ. [capture_instance] _CT zmian w tabela z wartością w __$ start_lsn mniejsza lub równa from_lsn lub równa to_lsn znajdują się w zestaw wyników.
<row_filter_option> :: = {wszystkie | zaktualizować wszystkie stare}
Opcja reguluje zawartość kolumny metadane , jak również wierszy zwracanych w zestaw wyników.Może mieć jedną z następujących opcji:
wszystkie
Zwraca wszystkie zmiany w określonymzakres LSN. Zmian z powodu operacji aktualizacji tej opcji zwraca tylko wiersz zawierający nowe wartości po zastosowaniu tej aktualizacji.Zaktualizuj wszystkie stare
Zwraca wszystkie zmiany w określonymzakres LSN. Dla zmian z powodu operacji aktualizacji tej opcji zwraca wiersz zawierający kolumna wartości przed aktualizacją i wiersz zawierający wartości kolumna po aktualizacji.
Zwracana tabela
Nazwa kolumny |
Typ danych |
Opis |
---|---|---|
__$ start_lsn |
binary(10) |
Zatwierdzeń LSN skojarzone zmiany, która pozwala zachować kolejność zatwierdzanie zmiany.Zmiany w tej samej transakcji mają tę samą wartośćLSN zatwierdzanie. |
__$ seqval |
binary(10) |
Sekwencja wartość używana do zmiany kolejności wierszy w obrębie transakcji. |
__$ operacji |
int |
Identyfikuje operację język edycji danych (DML), niezbędnych do zastosowania wiersz danych zmiana miejsce docelowe danych źródło.Może mieć jedną z następujących czynności: 1 = delete 2 = Wstaw 3 = aktualizacji (przechwyconych kolumna wartości są przed wykonaniem operacji aktualizacji).Wartość ta ma zastosowanie tylko, gdy filtr wiersza opcji, "zaktualizować wszystkie stare" jest określony. 4 = aktualizacji (przechwyconych kolumna wartości są po operacji aktualizacji) |
__$ update_mask |
varbinary(128) |
Maska bitowa bitem odpowiadającą każdej przechwyconych kolumna określone wystąpienieprzechwytywania.Wartość ta ma wszystkie zdefiniowane bitów zestaw do 1 gdy operacji $ __ = 1 lub 2.Gdy operacji $ __ = 3 lub 4, tylko tych bitów odpowiadającej kolumn, które zmiany są zestaw na wartość 1. |
<kolumnytabela przechwyconych źródło > |
zmienia się |
Pozostałe kolumny zwracana przez funkcja jest przechwyconych kolumn zidentyfikowane podczas przechwytywania wystąpienie zostało utworzone.Jeżeli podane zostały żadne kolumny na liście przechwyconych kolumna , zwracane są wszystkie kolumny wtabela źródło. |
Uprawnienia
Wymaga członkostwa w sysadmin stała rola serwera lub db_owner rola bazy danychstałej.Dla innych użytkowników wymaga uprawnienie SELECT wszystkich przechwyconych kolumn wtabela źródłoi, jeśli zdefiniowano bramkowania roli przechwytywania wystąpienie członkostwo w tej rola bazy danych. Gdy obiekt wywołujący nie ma uprawnień do wyświetlania danych źródło , funkcja zwraca błąd 229 ("zaznacz była odmowa uprawnień dla obiektu"fn_cdc_get_all_changes_...", bazy danych '<DatabaseName>", schematu "ZOZ". ").
Uwagi
Jeśli określonyzakres LSNnie wchodzą w osi czasu wystąpienieprzechwytywania śledzenia zmian, funkcja zwraca błąd 208 ("niewystarczającą liczbę argumentów były dostarczane do cdc.fn_cdc_get_all_changes procedury lub funkcja .").
Kolumny Typ danych image, text, i ntext zawsze są przypisywane NULL wartość, gdy operacji $ __ = 1 lub operacji $ __ = 3.Kolumny Typ danych varbinary(max), varchar(max), lub nvarchar(max) są przypisywane NULL wartość, gdy operacji $ __ = 3, chyba że kolumna zmieniona podczas aktualizacji.Gdy operacji $ __ = 1, kolumny te są przypisane ich wartości w czas delete.Kolumny obliczane, zawarte w przechwytywania wystąpienie zawsze mieć wartości NULL.
Przykłady
Kilka SQL Server Management Studio Szablony są dostępne, pokazują, jak używać Zmień dane przechwytywania kwerendy funkcji.Szablony te są dostępne na widoku menu w Management Studio.Aby uzyskać więcej informacji, zobacz Przy użyciu programu SQL Server Management Studio szablonów.
W tym przykładzie przedstawiono Enumerate All Changes for Valid Range Template.Używa funkcjacdc.fn_cdc_get_all_changes_HR_Department do raportu wszystkie zmiany aktualnie dostępne dla przechwytywania wystąpienie HR_Department, który jest zdefiniowany dlatabela źródło HumanResources.Department w AdventureWorks2008R2 bazy danych.
-- ==================================================
-- Enumerate All Changes for Valid Range Template
-- ==================================================
USE AdventureWorks2008R2;
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
Zobacz także