Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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).
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>_CTzmě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_CTzmě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:
Spusť uloženou proceduru pro vytvoření skriptu pro vytvoření obalu.
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ář.