sys.fn_all_changes_<capture_instance> (Transact-SQL)

Gäller för:SQL Server

Wrappers för alla ändringar-frågefunktioner . De skript som krävs för att skapa dessa funktioner genereras av den lagrade sys.sp_cdc_generate_wrapper_function proceduren. För mer information om den lagrade proceduren som används för att skapa, sys.fn_all_changes_<capture_instance>se sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Transact-SQL syntaxkonventioner

Syntax

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

Datumtidsvärdet som representerar den låga ändpunkten för intervallet av ändringstabellposter som ska inkluderas i resultatuppsättningen.

Endast rader i cdc.<capture_instance>_CT ändringstabellen som har en associerad committ-tid större än start_time ingår i resultatuppsättningen.

Om ett värde på NULL anges för detta argument, kommer den låga ändpunkten för frågeintervallet att motsvara den låga ändpunkten för det giltiga intervallet för fångstinstansen.

Om värdet av någon @start_time av eller parametern @end_time är längre än tiden för lägsta eller högsta LSN, kommer exekveringen av genererade wrapperfunktioner att returnera fel 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Det här felet bör hanteras av utvecklaren.

end_time

Datumtidsvärdet som representerar den högsta ändpunkten för intervallet av ändringstabellposter som ska inkluderas i resultatuppsättningen.

Denna parameter kan anta en av två möjliga betydelser beroende på värdet som väljs för @closed_high_end_point när sys.sp_cdc_generate_wrapper_function anropas för att generera skapa-skriptet för wrapper-funktionen:

  • @closed_high_end_point = 1

    Endast rader i cdc.<capture_instance>_CT ändringstabellen som har en associerad committ-tid mindre än eller lika med end_time ingår i resultatmängden.

  • @closed_high_end_point = 0

    Endast rader i cdc.capture_instance_CT ändringstabellen som har en associerad committ-tid strikt mindre än end_time ingår i resultatmängden.

Om ett värde på NULL anges för detta argument, kommer den höga ändpunkten för frågeintervallet att motsvara den höga ändpunkten för det giltiga intervallet för fångstinstansen.

Om värdet av någon @start_time av eller parametern @end_time är längre än tiden för lägsta eller högsta LSN, kommer exekveringen av genererade wrapperfunktioner att returnera fel 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Det här felet bör hanteras av utvecklaren.

<row_filter_option> ::= { alla | alla uppdaterar gammal }

Ett alternativ som styr innehållet i metadatakolumnerna och de rader som returneras i resultatuppsättningen.

Kan vara något av följande alternativ:

all
Returnerar alla ändringar inom det angivna LSN-intervallet. För ändringar som sker på grund av en uppdateringsoperation returnerar detta alternativ endast raden som innehåller de nya värdena efter att uppdateringen har applicerats.

Alla uppdaterade gamla
Returnerar alla ändringar inom det angivna LSN-intervallet. För ändringar som sker på grund av en uppdateringsoperation returnerar detta alternativ de två rader som innehåller kolumnvärdena före och efter uppdateringen.

Tabell returnerad

Kolumnnamn Kolumntyp Description
__CDC_STARTLSN binär(10) Det commit-LSN för transaktionen som är kopplad till ändringen. Alla ändringar som genomförs i samma transaktion delar samma commit-LSN.
__CDC_SEQVAL binär(10) Sekvensvärde som används för att ordna radändringarna i en transaktion.
<Kolumner från @column_list> varies De kolumner som identifieras i column_list-argumentet till sp_cdc_generate_wrapper_function när det anropas för att generera skriptet som skapar wrapper-funktionen.
__CDC_OPERATION nvarchar(2) Operationskod som anger vilken operation som krävs för att applicera raden på målmiljön. Det varierar beroende på värdet av argumentet row_filter_option presenteras i samtalet:

row_filter_option = 'alla'

'D' - borttagningsoperation

'I' - insättningsoperation

'UN' - uppdatera operationen nya värden

row_filter_option = 'alla uppdaterar gammal'

'D' - borttagningsoperation

'I' - insättningsoperation

'UN' - uppdatera operationen nya värden

'UO' - uppdatera operationens gamla värden
<Kolumner från @update_flag_list> bit En bitflagga namnges genom att lägga till _uflag i kolumnnamnet. Flaggan är alltid satt till NULL när __CDC_OPERATION är 'D', 'I', i 'UO'. När __CDC_OPERATION är 'UN' sätts den till 1 om uppdateringen har orsakat en ändring i motsvarande kolumn. Annars, 0.

Anmärkningar

Funktionen fn_all_changes_<capture_instance> fungerar som en wrapper för cdc.fn_cdc_get_all_changes_<capture_instance> frågefunktionen. Den sys.sp_cdc_generate_wrapper lagrade proceduren används för att generera skriptet som skapar wrappern.

Wrapper-funktioner skapas inte automatiskt. Det finns två saker du måste göra för att skapa wrapper-funktioner:

  1. Kör den lagrade proceduren för att generera skriptet som skapar wrappern.

  2. Exekvera skriptet för att faktiskt skapa wrapper-funktionen.

Wrapper-funktioner gör det möjligt för användare att systematiskt söka efter ändringar som inträffat inom ett intervall begränsat av datumtidsvärden istället för av LSN-värden. Wrapperfunktionerna utför alla nödvändiga konverteringar mellan de angivna datumtidsvärdena och de LSN-värden som behövs internt som argument till frågefunktionerna. När wrapperfunktionerna används seriell för att bearbeta en ström av förändringsdata säkerställer de att ingen data går förlorad eller upprepas, förutsatt att följande konvention följs: @end_time värdet på intervallet som är kopplat till ett samtal anges som @start_time värdet för intervallet som är kopplat till det efterföljande samtalet.

Genom att använda parametern @closed_high_end_point när du skapar skriptet kan du generera wrappers som stödjer antingen en stängd övre gräns eller en öppen övre gräns i det angivna frågefönstret. Det vill säga, du kan avgöra om poster som har en committ-tid lika med den övre gränsen för extraktionsintervallet ska inkluderas i intervallet. Som standard ingår den övre gränsen.

Resultatmängden som returneras av all changes-wrapperfunktionen returnerar __$start_lsn och __$seqval-kolumnerna i förändringstabellen som kolumner __CDC_STARTLSN respektive __CDC_SEQVAL. Den följer dessa med endast de spårade kolumner som förekom i @column_list-parametern när wrappern genererades. Om @column_list är NULL returneras alla spårade källkolumner. Källkolumnerna följs av en operationskolumn, __CDC_OPERATION, som är en en- eller tvåteckenskolumn som identifierar operationen.

Bitflaggor läggs sedan till resultatuppsättningen för varje kolumn som identifieras i parametern @update_flag_list . För all changes-wrappern kommer bitflaggorna alltid att vara NULL om __CDC_OPERATION är 'D', 'I' eller 'UO'. Om __CDC_OPERATION är 'UN' sätts flaggan till 1 eller 0, beroende på om uppdateringsoperationen orsakade en ändring i kolumnen.

Konfigurationsmallen för förändringsdatainsamling 'Instansiat CDC Wrapper TVFs for Schema' visar hur man använder den lagrade sp_cdc_generate_wrapper_function proceduren för att erhålla CREATE-skript för alla wrapperfunktioner för ett schemas definierade frågefunktioner. Mallen skapar sedan dessa skript. För mer information om mallar, se Template Explorer.

Wrapper-funktionerna sys.fn_all_changes_<capture_instance> och sys.fn_net_changes_<capture_instance> är beroende av systemfunktionerna cdc.fn_cdc_get_all_changes_<capture_instance> och cdc.fn_cdc_get_net_changes_<capture_instance>. Fel 313 förväntas om det LSN-intervallet som tillhandahålls inte är lämpligt vid anrop cdc.fn_cdc_get_all_changes_<capture_instance> eller cdc.fn_cdc_get_net_changes_<capture_instance>. Om parametern lsn_value är längre än tiden för lägsta eller högsta LSN, kommer exekveringen av dessa funktioner att returnera fel 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Det här felet bör hanteras av utvecklaren.

Se även