Sdílet prostřednictvím


sys.fn_all_changes_<capture_instance> (Transact-SQL)

platí pro:SQL Server

Obálky pro dotazovací funkce všech změn. Skripty potřebné k vytvoření těchto funkcí jsou generovány uloženou procedurou sys.sp_cdc_generate_wrapper_function . Pro více informací o uložených procedurách použitých k vytvoření sys.fn_all_changes_<capture_instance>, viz sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Transact-SQL konvence syntaxe

Syntaxe

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

Hodnota datetime , která představuje nejnižší koncový bod rozsahu záznamů v tabulce změn, které je třeba zahrnout do výsledné množiny.

Do výsledné sady jsou zahrnuty pouze řádky v tabulce cdc.<capture_instance>_CT změn, které mají přiřazený čas potvrzení větší než start_time .

Pokud je pro tento argument zadán hodnota NULL, spodní koncový bod dotazovacího rozsahu bude odpovídat nízkému konci platného rozsahu pro zachycení instance.

Pokud hodnota jednoho z @start_time parametrů nebo @end_time je za časem nejnižšího nebo nejvyššího LSN, vykonání generovaných obalových funkcí vrátí chybu 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Tuto chybu by měl zpracovat vývojář.

end_time

Hodnota datetime , která představuje nejvyšší konec rozsahu položek change table, které je třeba zahrnout do výsledné množiny.

Tento parametr může mít jeden ze dvou možných významů v závislosti na zvolené hodnotě pro , @closed_high_end_point když sys.sp_cdc_generate_wrapper_function je volán k vytvoření skriptu create pro funkci wrapper:

  • @closed_high_end_point = 1

    Do výsledné sady jsou zahrnuty pouze řádky v tabulce cdc.<capture_instance>_CT změn, které mají přiřazený čas potvrzení menší nebo roven end_time.

  • @closed_high_end_point = 0

    Do výsledné sady jsou zahrnuty pouze řádky v tabulce cdc.capture_instance_CT změn, které mají připsaný čas uložení striktně menší než end_time.

Pokud je pro tento argument zadán NULL, vysoký koncový bod dotazovacího rozsahu bude odpovídat vysokému konci platného rozsahu pro zachycení instance.

Pokud hodnota jednoho z @start_time parametrů nebo @end_time je za časem nejnižšího nebo nejvyššího LSN, vykonání generovaných obalových funkcí vrátí chybu 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Tuto chybu by měl zpracovat vývojář.

<row_filter_option> ::= { všichni | všichni aktualizují staré }

Možnost, která řídí obsah metadatových sloupců a řádků vrácených ve výsledné sadě.

Může to být jedna z následujících možností:

all
Vrátí všechny změny v zadaném rozsahu LSN. Pro změny, které nastanou v důsledku aktualizační operace, tato možnost po aplikaci aktualizace vrátí pouze řádek obsahující nové hodnoty.

všechny aktualizace staré
Vrátí všechny změny v zadaném rozsahu LSN. Pro změny, které nastanou v důsledku aktualizace operace, tato možnost vrací dva řádky obsahující hodnoty sloupců před aktualizací a po aktualizaci.

Vrácená tabulka

Název sloupce Typ sloupce Description
__CDC_STARTLSN binární(10) Commit LSN transakce, která je spojena se změnou. Všechny změny, které jsou zavázány ve stejné transakci, sdílejí stejný commit LSN.
__CDC_SEQVAL binární(10) Sekvenční hodnota, která se používá k uspořádání řádku, se mění v transakci.
<sloupky z @column_list> liší se Sloupce, které jsou identifikovány v column_list argumentu, do sp_cdc_generate_wrapper_function kdy je volán, aby vygeneroval skript, který vytváří funkci obalu.
__CDC_OPERATION nvarchar(2) Kód operací, který označuje operaci potřebnou k aplikaci řádku na cílové prostředí. Bude se lišit podle hodnoty argumentu , row_filter_option v hovoru uveden:

row_filter_option = 'všechny'

'D' - operace odstranění

'I' - vložená operace

'UN' - aktualizace operace nových hodnot

row_filter_option = 'vše aktualizuje staré'

'D' - operace odstranění

'I' - vložená operace

'UN' - aktualizace operace nových hodnot

'UO' - aktualizovat staré hodnoty operace
<sloupky z @update_flag_list> bit Bitová příznak se nazývá přidáním _uflag ke názvu sloupce. Vlajka je vždy nastavena na NULL, když __CDC_OPERATION je 'D', 'I' nebo 'UO'. Když je __CDC_OPERATION 'UN', nastaví se na 1, pokud aktualizace změnila odpovídající sloupec. Jinak 0.

Poznámky

Funkce fn_all_changes_<capture_instance> slouží jako obal pro dotazovací funkci.cdc.fn_cdc_get_all_changes_<capture_instance> Uložená procedura sys.sp_cdc_generate_wrapper se používá k vytvoření skriptu pro vytvoření obalu.

Funkce obalu se nevytvářejí automaticky. K vytvoření obalových funkcí musíte udělat dvě věci:

  1. Spusť uloženou proceduru pro vytvoření skriptu pro vytvoření obalu.

  2. Spuskutěte skript, který skutečně vytvoří funkci obalu.

Funkce obalu umožňují uživatelům systematicky dotazovat na změny, které nastaly v intervalu ohraničeném hodnotami datového času místo hodnotami LSN. Funkce obalu provádějí všechny požadované převody mezi zadanými hodnotami datetime a LSN hodnotami potřebnými interně jako argumenty pro dotazovací funkce. Když jsou obalové funkce používány sériově k zpracování toku změn dat, zajišťují, že žádná data nejsou ztracena ani opakována za předpokladu, že je dodržena následující konvence: @end_time hodnota intervalu spojeného s jedním voláním je uvedena jako @start_time hodnota intervalu spojeného s následujícím voláním.

Použitím parametru @closed_high_end_point při vytváření skriptu můžete generovat obaly, které podporují buď uzavřenou horní hranici, nebo otevřenou horní hranici v daném dotazovacím okně. To znamená, že můžete rozhodnout, zda budou do intervalu zahrnuty položky s časem uložení roven horní hranici extrakčního intervalu. Ve výchozím nastavení je horní mez zahrnuta.

Výsledná množina, kterou vrací funkce obalu všech změn, vrací sloupce __$start_lsn a __$seqval tabulky změn jako sloupce __CDC_STARTLSN a __CDC_SEQVAL. Následuje pouze ty sledované sloupce, které se objevily v parametru @column_list při generování obalu. Pokud je @column_list NULL, všechny sledované sloupce jsou vráceny. Za sloupci zdrojů následuje sloupec operace __CDC_OPERATION, což je sloupec o jednom nebo dvou znacích identifikujících operaci.

K množině výsledků jsou pak přidány bitové příznaky pro každý sloupec, který je v parametru @update_flag_list identifikován. Pro obal všech změn budou bitové příznaky vždy NULL, pokud __CDC_OPERATION je 'D', 'I' nebo 'UO'. Pokud je __CDC_OPERATION 'UN', příznak bude nastaven na 1 nebo 0, v závislosti na tom, zda aktualizace způsobila změnu ve sloupci.

Šablona konfigurace pro zachycení dat "Instancovat CDC Wrapper TVFs for Schema" ukazuje, jak použít uloženou proceduru sp_cdc_generate_wrapper_function k získání skriptů CREATE pro všechny funkce obalu definovaných dotazovacích funkcí schématu. Šablona pak tyto skripty vytvoří. Pro více informací o šablonách viz Průzkumník šablon.

Funkce sys.fn_all_changes_<capture_instance> obalu a jsou sys.fn_net_changes_<capture_instance> závislé na systémových funkcích cdc.fn_cdc_get_all_changes_<capture_instance> a cdc.fn_cdc_get_net_changes_<capture_instance>. Chyba 313 se očekává, pokud dodaný rozsah LSN není vhodný při volání cdc.fn_cdc_get_all_changes_<capture_instance> nebo cdc.fn_cdc_get_net_changes_<capture_instance>. Pokud je lsn_value parametr za časem nejnižšího nebo nejvyššího LSN, vykonání těchto funkcí vrátí chybu 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Tuto chybu by měl zpracovat vývojář.

Viz také