cdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL)
Zwraca jeden wiersz obroty netto dla każdego wiersza źródłowego zmienione w ramach określonego LSN zakres.Oznacza to, kiedy wiersza źródłowego ma wiele zmian podczas LSN zakres, pojedynczy wiersz, który odzwierciedla ostateczna zawartość wiersza jest zwracany przez funkcja.Na przykład, jeśli transakcja wstawia wiersz w tabela źródłowej i kolejnych transakcji znajdujących się w zasięgu LSN aktualizuje jednego lub kilku kolumna s w danym wierszu, funkcja zwraca tylko jeden wiersz, zawierający zaktualizowane kolumna wartości.
Ta funkcja wyliczenie jest tworzone, gdy urządzenie źródłowe tabeli jest włączony do przechwytywania danych zmiany i śledzenia netto jest określona.Aby włączyć śledzenie netto, urządzenie źródłowe tabela musi mieć klucz podstawowy lub indeks unikatowy.Nazwa funkcja pochodzi i używa cdc.fn_cdc_get_net_changes_ formatucapture_instance, where capture_instance jest wartość określona dla przechwytywania przy wystąpieniu urządzenie źródłowe tabela został włączony do przechwytywania danych zmian.Aby uzyskać więcej informacji zobaczsys.sp_cdc_enable_table (języka Transact-SQL).
cdc.fn_cdc_get_net_changes_capture_instance ( from_lsn , to_lsn , '<row_filter_option>' )
<row_filter_option> ::=
{ all
| all with mask
| all with merge
}
Argumenty
from_lsn
The LSN that represents the low endpoint of the LSN range to include in the result set.from_lsn is binary(10).Tylko wiersze w _CT CDC. [capture_instance zmian w tabela w __ $ start_lsn równe lub większe niż wartośćfrom_lsn są uwzględniane zestaw wyników.
to_lsn
The LSN that represents the high endpoint of the LSN range to include in the result set.to_lsn is binary(10).Tylko wiersze w _CT CDC. [capture_instance zmienić tabela z wartością w __ $ start_lsn mniejsze lub równefrom_lsn lub równy to_lsn są uwzględniane zestaw wyników.
<row_filter_option> :: = {wszystkie | wszystko za pomocą maski | wszystko za pomocą korespondencji seryjnej}
Opcja, która reguluje zawartość kolumny metadane, jak również wierszy zwracanych zestaw wyników.Może mieć jedną z następujących opcji:wszystkie
Zwraca LSN końcowych zmian do działania potrzebne do zastosowania w wierszu start_lsn $ __ kolumny metadane w wierszu i __ $ operacji.Update_mask $ __ kolumna ma zawsze wartość NULL.wszystko to przy użyciu maski
Zwraca LSN końcowych zmian do działania potrzebne do zastosowania w wierszu start_lsn $ __ kolumny metadane w wierszu i __ $ operacji.Ponadto, gdy operacja aktualizacji zwraca (__ $ operacji = 4) wartość zwracana w __ $ update_mask zaznaczone kolumny przechwycone, zmodyfikowana w aktualizacji.wszystko to przy użyciu korespondencji seryjnej
Zwraca LSN końcowych zmian do wiersza w start_lsn $ __ kolumny metadane.Operacja $ __ kolumna ma być jedną z dwóch wartości: 1 do usunięcia i 5, aby wskazać, że operacja potrzebna zastosować zmianę to wstawienia lub aktualizacji. Update_mask $ __ kolumna ma zawsze wartość NULL.Ponieważ logika, aby określić dokładne operacji dla danej zmiany zwiększa złożoność kwerendy, ta opcja jest przeznaczona do poprawić wydajność kwerendy podczas wystarczy wskazać, że operacja potrzebne, aby zastosować zmiany danych jest wstawienia lub aktualizacji, ale nie jest konieczne jednoznacznie rozróżnić.Opcja ta jest najbardziej atrakcyjnych, w którym operacji scalania jest dostępny bezpośrednio, takich jak środowiska docelowego SQL Server 2008 środowisko.
Zwracana tabela
Nazwa kolumna |
Typ danych |
Description |
---|---|---|
__ $ start_lsn |
binary(10) |
LSN skojarzonych z transakcją zatwierdzanie zmiany. Wszystkie zmiany w tej samej transakcji współużytkowanie tej samej transakcji LSN.Na przykład, jeśli operację aktualizacji urządzenie źródłowe tabela modyfikuje dwie kolumny w dwóch wierszach, w tabela Zmiana będzie zawierał cztery wiersze, z taką samą wartość start_lsn __ $. |
__ $ seqval |
binary(10) |
Sekwencja, która służy do zmiany wiersza w obrębie transakcji zamówienia. |
Operacja $ __ |
int |
Identyfikuje operację języka (DML) manipulacji danych potrzebnych do wiersza zawierającego dane, zmiany są stosowane do danych docelowych urządzenie źródłowe. Jeśli wartość parametru row_filter_option wszystkich lub wszystkich z maską, wartość w tym kolumna może mieć jedną z następujących wartości: 1 = delete 2 = wstawiania 4 = aktualizacji Jeżeli wartość parametru row_filter_option jest wszystko za pomocą korespondencji seryjnej, wartość w tej kolumnie może być jedną z następujących wartości: 1 = delete 5 = wstawienie lub aktualizacja Wartość 5 oznacza, że nie wiadomo czy wiersz jest już obecny i tylko musi zostać zaktualizowane lub czy wiersz nie jest aktualnie obecne i musi zostać wstawiona. |
__ $ update_mask |
varbinary(128) |
Maska bitów bitem odpowiadające każdej kolumna przechwyconych określonych dla wystąpienie przechwytywania.Wszystkie ta wartość została zdefiniowana bitów zestaw na 1 podczas operacji $ __ = 1 lub 2.Podczas operacji $ __ = 3 lub 4, tylko do tych, które bity odpowiadający kolumny, które zmiany są ustawione na 1. |
<przechwycone urządzenie źródłowe kolumn tabela> |
zmienia się |
Pozostałe kolumny zwróconych przez funkcja są kolumny z urządzenie źródłowe tabela, które zostały zidentyfikowane jako kolumny przechwyconych podczas tworzenia wystąpienie przechwytywania.Jeśli żadne kolumna zostały określone na liście kolumn przechwycone, wszystkie kolumna w urządzenie źródłowe tabela są zwracane. |
Uprawnienia
Wymaga członkostwo w grupie administratorów serwera stały lub ustalić rola bazy danych db_owner.W przypadku wszystkich innych użytkowników wymaga uprawnienie SELECT do wszystkich przechwyconych kolumn w tabela źródłowej i zdefiniowano bramkowania roli dla wystąpienie przechwytywania członkostwo w tej bazy danych roli.Gdy obiekt wywołujący nie ma uprawnień do oglądania urządzenie źródłowe danych, funkcja zwraca błąd 208 (nazwa nieprawidłowy obiekt).
Remarks
Jeśli określony zakres LSN nie wchodzi w zmian osi czasu wystąpienie przechwytywania, funkcja zwraca błąd 208 (nazwa nieprawidłowy obiekt).
Przykłady
W poniższym przykładzie użyto funkcja cdc.fn_cdc_get_net_changes_HR_Department Aby zgłosić obroty netto wprowadzone w tabela źródłowej HumanResources.Department podczas określonego czas interwału.
Pierwszy, GETDATE funkcja jest używana do oznaczania początku przedziału czas. Po kilku instrukcji DML są stosowane do urządzenie źródłowe tabela, GETDATE funkcja jest wywoływana ponownie do identyfikowania koniec przedziału czas. Funkcja sys.fn_cdc_map_time_to_lsn jest następnie używana do mapowania zakres kwerendy przechwytywania danych zmiana rozpoczynającą się LSN wartości interwału.Wreszcie funkcja cdc.fn_cdc_get_net_changes_HR_Department jest kierowane kwerendy w celu uzyskania obroty netto na urządzenie źródłowe tabela dla przedziału czas. Należy zauważyć, że wiersz, który jest wstawiany, a następnie usuwane nie pojawia się zestaw wyników zwróconych przez funkcja.Dzieje się tak, ponieważ wiersz, który jest najpierw dodać, a następnie usuwane w oknie kwerendy powoduje, że nie zmienia netto w tabela źródłowej dla interwału.Przed uruchomieniem w tym przykładzie konieczne jest najpierw uruchomienie w przykładzie B sys.sp_cdc_enable_table (języka Transact-SQL).
USE AdventureWorks;
GO
DECLARE @begin_time datetime, @end_time datetime, @from_lsn binary(10), @to_lsn binary(10);
-- Obtain the beginning of the time interval.
SET @begin_time = GETDATE() -1;
-- DML statements to produce changes in the HumanResources.Department table.
INSERT INTO HumanResources.Department (Name, GroupName)
VALUES (N'MyDept', N'MyNewGroup');
UPDATE HumanResources.Department
SET GroupName = N'Resource Control'
WHERE GroupName = N'Inventory Management';
DELETE FROM HumanResources.Department
WHERE Name = N'MyDept';
-- Obtain the end of the time interval.
SET @end_time = GETDATE();
-- Map the time interval to a change data capture query range.
SET @from_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than or equal', @begin_time);
SET @to_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal', @end_time);
-- Return the net changes occurring within the query window.
SELECT * FROM cdc.fn_cdc_get_net_changes_HR_Department(@from_lsn, @to_lsn, 'all');