Sdílet prostřednictvím


sys.fn_net_changes_<capture_instance> (Transact-SQL)

platí pro:SQL Server

Obaly pro síť mění dotazovací funkce. 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_net_changes_<capture_instance>, viz sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Transact-SQL konvence syntaxe

Syntaxe

  
fn_net_changes_<capture_instance> ('start_time', 'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all with mask  
  | all with merge  
}  

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í přísně vyšší 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 významů, v závislosti na hodnotě zvolené pro @closed_high_end_point při sys.sp_cdc_generate_wrapper_function vyvolání skriptu pro vytvoření funkce obalu:

  • @closed_high_end_point = 1

    Do výsledné sady jsou zahrnuty pouze řádky v tabulce cdc.<capture_instance>_CT změn, které mají hodnotu v __$start_lsn a odpovídající čas uložení menší nebo rovný start_time .

  • @closed_high_end_point = 0

    Do výsledné množiny jsou zahrnuty pouze řádky v tabulce cdc.<capture_instance>_CT změn, které mají hodnotu v __$start_lsn a odpovídající čas uložení striktně menší než start_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še s maskou | vše s merge }

Možnost, která řídí obsah sloupců metadat i řádky vrácené ve výsledné sadě. Může to být jedna z následujících možností:

all
Vrátí konečný obsah změněného řádku ve sloupcích obsahu a operaci potřebnou k aplikaci řádku ve sloupci metadat __CDC_OPERATION.

Všichni s maskou
Vrátí konečný obsah všech změněných řádků ve sloupcích obsahu a operaci potřebnou k aplikaci každého řádku ve sloupci metadat __CDC_OPERATION. Pokud byl při generování skriptu pro vytvoření funkce obalu zadán seznam příznaků aktualizace, tato možnost je nutná pro naplnění aktualizační masky.

vše s merge
Vrátí konečný obsah všech změněných řádků ve sloupcích obsahu.

Sloupec __CDC_OPERATION bude jednou ze dvou následujících hodnot:

  • D, pokud musí být řádek smazán.

  • M, pokud je třeba řádek vložit nebo aktualizovat.

Logika pro určení, zda je potřeba vložit nebo aktualizovat pro aplikaci změny na cílové části, zvyšuje složitost dotazu. Tuto možnost použijte pro zlepšení výkonu, když není nutné rozlišovat mezi vkládáním a aktualizací. Tento přístup funguje nejlépe v cílových prostředích, kde je operace sloučení dostupná přímo.

Vrácená tabulka

Název sloupce Typ sloupce Description
<sloupky z @column_list> liší se Sloupce, které jsou identifikovány v column_list argumentu, když sp_cdc_generate_wrapper_function je volán, aby vygeneroval skript pro vytvoření obalu. Pokud je column_list NULL, všechny sledované sloupce se objeví ve výsledné sadě.
__CDC_OPERATION nvarchar(2) Operační kód, který určuje, která operace je potřeba k aplikaci řádku v cílovém prostředí. Operace se bude lišit v závislosti na hodnotě argumentu row_filter_option , který je uveden v následujícím volání:

row_filter_option = 'všichni', 'všichni s maskou'

'D' - operace odstranění

'I' - vložená operace

'UN' - aktualizace operace

row_filter_option = 'vše se sloučením'

'D' - operace odstranění

'M' – buď vkládání, nebo aktualizace operace
<sloupky z @update_flag_list> bit Bitový příznak, který se jmenuje přidáním _uflag ke názvu sloupce. Vlajka nabývá hodnoty ne-NULL pouze tehdy, když row_filter_option= 'vše s maskou' a __CDC_OPERATION = 'UN'. Je nastavena na 1, pokud byl odpovídající sloupec upraven v oknu dotazu. Jinak 0.

Poznámky

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

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 net changes wrapper, vrací pouze ty sledované sloupce, které byly v , @column_list když byl wrapper generován. Pokud @column_list je 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ů pro každý sloupec, který je identifikován v parametru @update_flag_list, jsou pak připojeny bitové příznaky k množině výsledků . Pro net changes wrapper budou bitové příznaky vždy NULL, pokud , @row_filter_option , které se používá ve volání wrapperu, je 'all' nebo 'all with merge'. Pokud je hodnota @row_filter_option nastavena na 'all with mask' a __CDC_OPERATION je 'D' nebo 'I', hodnota příznaku bude také NULL. Pokud je __CDC_OPERATION 'UN', příznak bude nastaven na 1 nebo 0, v závislosti na tom, zda operace aktualizace sítě 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é