Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Obudowy funkcji zapytań o wszystkie zmiany . Skrypty potrzebne do tworzenia tych funkcji są generowane przez procedurę sys.sp_cdc_generate_wrapper_function przechowywaną. Aby uzyskać więcej informacji o procedurze przechowywanej użytej do tworzenia sys.fn_all_changes_<capture_instance>, zobacz sys.sp_cdc_generate_wrapper_function (Transact-SQL).
Transact-SQL konwencje składni
Składnia
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
}
Arguments
start_time
Wartość date-time , która reprezentuje najniższy koniec zakresu wpisów w tabeli zmian, które należy uwzględnić w zbiorze wyników.
W zbiorze wyników uwzględniane są tylko wiersze w tabeli cdc.<capture_instance>_CT zmian, które mają powiązany czas zatwierdzenia większy niż start_time .
Jeśli dla tego argumentu podana zostanie wartość NULL, najniższy punkt końcowy zakresu zapytań będzie odpowiadał najniższemu końcowi prawidłowego zakresu dla instancji przechwytującej.
Jeśli wartość jednego z @start_time parametrów lub @end_time jest poza czasem najniższego lub najwyższego LSN, wykonanie wygenerowanych funkcji owijających zwróci błąd 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Ten błąd powinien być obsługiwany przez dewelopera.
end_time
Wartość date-time reprezentująca najwyższy punkt końcowy zakresu wpisów w tabeli zmian, które należy uwzględnić w zbiorze wyników.
Ten parametr może przyjmować jedno z dwóch możliwych znaczeń, w zależności od wartości wybranej dla , @closed_high_end_point gdy sys.sp_cdc_generate_wrapper_function wywołuje się skrypt tworzenia funkcji wrapper:
@closed_high_end_point = 1
Do zbioru wyników uwzględniane są tylko wiersze w tabeli
cdc.<capture_instance>_CTzmian, które mają przypisany czas zatwierdzenia mniejszy lub równy end_time.@closed_high_end_point = 0
Do zbioru wyników uwzględniane są tylko wiersze w tabeli
cdc.capture_instance_CTzmian, które mają przypisany czas zatwierdzenia ściśle mniejszy niż end_time.
Jeśli dla tego argumentu podana zostanie wartość NULL, wysoki punkt końcowy zakresu zapytań będzie odpowiadał wysokiemu końcowi prawidłowego zakresu dla instancji przechwytującej.
Jeśli wartość jednego z @start_time parametrów lub @end_time jest poza czasem najniższego lub najwyższego LSN, wykonanie wygenerowanych funkcji owijających zwróci błąd 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Ten błąd powinien być obsługiwany przez dewelopera.
<row_filter_option> ::= { wszyscy | wszyscy aktualizują stare }
Opcja regulująca zawartość kolumn metadanych oraz wiersze zwracane w zbiorze wyników.
Może to być jedna z następujących opcji:
all
Zwraca wszystkie zmiany w określonym zakresie LSN. Dla zmian zachodzących w wyniku operacji aktualizacji, ta opcja zwraca tylko wiersz zawierający nowe wartości po zastosowaniu aktualizacji.
wszystkie aktualizacje stare
Zwraca wszystkie zmiany w określonym zakresie LSN. Dla zmian zachodzących w wyniku operacji aktualizacyjnej, ta opcja zwraca dwa wiersze zawierające wartości kolumn przed i po aktualizacji.
Zwracana tabela
| Nazwa kolumny | Typ kolumny | Description |
|---|---|---|
| __CDC_STARTLSN | |
Commit LSN transakcji powiązanej ze zmianą. Wszystkie zmiany zatwierdzane w tej samej transakcji mają ten sam commit LSN. |
| __CDC_SEQVAL | |
Wartość sekwencyjna używana do uporządkowania wiersza zmienia się w transakcji. |
| <kolumny z @column_list> | varies | Kolumny identyfikowane w column_list argumentu do sp_cdc_generate_wrapper_function momentu wywołania do wygenerowania skryptu tworzącego funkcję wrappera. |
| __CDC_OPERATION | nvarchar(2) | Kod operacji wskazujący operację potrzebną do zastosowania wiersza do środowiska docelowego. Będzie się ona różnić w zależności od wartości argumentu przedstawionego row_filter_option w rozmowie: row_filter_option = 'wszystkie' 'D' - operacja usuwania 'I' - wstaw operację 'UN' - aktualizacja operacji nowych wartości row_filter_option = 'wszystko aktualizuje stary' 'D' - operacja usuwania 'I' - wstaw operację 'UN' - aktualizacja operacji nowych wartości 'UO' - aktualizuj stare wartości operacji |
| <kolumny z @update_flag_list> | bit | Flaga bitu nazywana jest przez dodanie _uflag do nazwy kolumny. Flaga zawsze jest ustawiona na NULL, gdy __CDC_OPERATION to 'D', 'I' lub 'UO'. Gdy __CDC_OPERATION jest 'UN', ustawia się go na 1, jeśli aktualizacja spowodowała zmianę odpowiadającej kolumny. W przeciwnym razie 0. |
Uwagi
Funkcja służy fn_all_changes_<capture_instance> jako owijacz dla cdc.fn_cdc_get_all_changes_<capture_instance> funkcji zapytania. Procedura sys.sp_cdc_generate_wrapper przechowywana służy do generowania skryptu tworzącego wrapper.
Funkcje otoczenia nie są tworzone automatycznie. Aby stworzyć funkcje wrappera, musisz zrobić dwie rzeczy:
Uruchom procedurę przechowywaną, aby wygenerować skrypt do utworzenia wrappera.
Wykonaj skrypt, aby faktycznie utworzyć funkcję wrappera.
Funkcje owijania pozwalają użytkownikom systematycznie zapytywać o zmiany, które zaszły w przedziale ograniczonym wartościami daty-czasowymi , zamiast wartościami LSN. Funkcje owijacze wykonują wszystkie wymagane konwersje między podanymi wartościami czasu datowego a wartościami LSN potrzebnymi wewnętrznie jako argumenty do funkcji zapytań. Gdy funkcje owijania są używane szeregowo do przetwarzania strumienia danych zmian, zapewniają, że żadne dane nie zostaną utracone ani powtórzone, pod warunkiem przestrzegania następującej konwencji: @end_time wartość przedziału powiązanego z jednym wywołaniem jest podana jako @start_time wartość przedziału powiązanego z kolejnym wywołaniem.
Używając parametru @closed_high_end_point podczas tworzenia skryptu, możesz generować owijania obsługujące zamkniętą górną lub otwartą górną granicę w określonym oknie zapytania. Oznacza to, że możesz zdecydować, czy wpisy mające czas zatwierdzenia równy górnej granicy interwału ekstrakcji mają być uwzględnione w tym przedziale. Domyślnie jest uwzględniana górna granica.
Zbiór wyników, który zwraca funkcja owijania wszystkich zmian , zwraca kolumny __$start_lsn i __$seqval tabeli zmian odpowiednio jako kolumny __CDC_STARTLSN i __CDC_SEQVAL. Następnie pojawiają się tylko te śledzone kolumny, które pojawiły się w parametrze @column_list podczas generowania wrappera. Jeśli @column_list jest NULL, zwracane są wszystkie śledzone kolumny źródłowe. Kolumny źródłowe są poprzedzone kolumną operacji __CDC_OPERATION, która jest jedno- lub dwuznakową kolumną identyfikującą operację.
Flagi bitowe są następnie dodawane do zestawu wyników dla każdej kolumny zidentyfikowanej w parametrze @update_flag_list . Dla owijania wszystkich zmian flagi bitowe zawsze będą NULL, jeśli __CDC_OPERATION jest 'D', 'I' lub 'UO'. Jeśli __CDC_OPERATION jest 'UN', flaga zostanie ustawiona na 1 lub 0, w zależności od tego, czy operacja aktualizacji spowodowała zmianę kolumny.
Szablon konfiguracji zmiany przechwytywania danych "Instancja CDC Wrapper TVFs for Schema" pokazuje, jak użyć procedury sp_cdc_generate_wrapper_function przechowywanej do uzyskania skryptów CREATE dla wszystkich funkcji wrappera dla zdefiniowanych funkcji zapytań schematu. Szablon następnie tworzy te skrypty. Więcej informacji o szablonach można znaleźć w Eksploratorze szablonów.
Funkcje sys.fn_all_changes_<capture_instance> owijającej i sys.fn_net_changes_<capture_instance> zależą od funkcji cdc.fn_cdc_get_all_changes_<capture_instance> systemowych i cdc.fn_cdc_get_net_changes_<capture_instance>. Błąd 313 jest oczekiwany, jeśli podany zakres LSN nie jest odpowiedni podczas wywoływania cdc.fn_cdc_get_all_changes_<capture_instance> lub cdc.fn_cdc_get_net_changes_<capture_instance>. Jeśli lsn_value parametr jest poza czasem najniższego lub najwyższego LSN, wykonanie tych funkcji zwróci błąd 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Ten błąd powinien być obsługiwany przez dewelopera.