Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Wrappers för nätet ändrar 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_net_changes_<capture_instance>se sys.sp_cdc_generate_wrapper_function (Transact-SQL).
Transact-SQL syntaxkonventioner
Syntax
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
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 strikt större än start_time ingår i resultatmängden.
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 få en av två betydelser, beroende på vilket värde som väljs för @closed_high_end_point när sys.sp_cdc_generate_wrapper_function anropas för att generera skriptet som skapar wrapper-funktionen:
@closed_high_end_point = 1
Endast rader i
cdc.<capture_instance>_CTändringstabellen som har ett värde i __$start_lsn och motsvarande committ-tid mindre än eller lika med start_time inkluderas i resultatmängden.@closed_high_end_point = 0
Endast rader i
cdc.<capture_instance>_CTändringstabellen som har ett värde i __$start_lsn och en motsvarande committ-tid strikt mindre än start_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 med mask | alla med sammanslagning }
Ett alternativ som styr innehållet i metadatakolumnerna samt raderna som returneras i resultatuppsättningen. Kan vara något av följande alternativ:
all
Returnerar slutinnehållet för en ändrad rad i innehållskolumnerna, och operationen som krävs för att tillämpa raden i metadatakolumnen __CDC_OPERATION.
alla med mask
Returnerar slutinnehållet för alla ändrade rader i innehållskolumnerna, och den operation som krävs för att tillämpa varje rad i metadatakolumnen __CDC_OPERATION. Om en uppdateringsflagglista specificerades när du genererade skriptet för att skapa wrapper-funktionen krävs detta alternativ för att fylla i uppdateringsmasken.
allt med sammanslagning
Returnerar slutgiltigt innehåll för alla ändrade rader i innehållskolumnerna.
Kolumnen __CDC_OPERATION kommer att vara ett av följande två värden:
D, om raden måste tas bort.
M, om raden måste infogas eller uppdateras.
Logiken för att avgöra om en insättning eller uppdatering behövs för att tillämpa en ändring på målet ökar frågekomplexiteten. Använd detta alternativ för förbättrad prestanda när det inte är nödvändigt att skilja mellan insättnings- och uppdateringsoperationer. Denna metod fungerar bäst i målmiljöer där en sammanslagningsoperation är tillgänglig direkt.
Tabell returnerad
| Kolumnnamn | Kolumntyp | Description |
|---|---|---|
| <Kolumner från @column_list> | varies | Kolumnerna som identifieras i column_list-argumentet till sp_cdc_generate_wrapper_function när det anropas för att generera skriptet för att skapa wrappern. Om column_list är NULL kommer alla spårade källkolumner att visas i resultatuppsättningen. |
| __CDC_OPERATION | nvarchar(2) | En operationskod som anger vilken operation som krävs för att tillämpa raden på målmiljön. Operationen varierar beroende på värdet av argumentet row_filter_option som tillhandahålls i följande anrop: row_filter_option = 'alla', 'alla med mask' 'D' - borttagningsoperation 'I' - insättningsoperation 'UN' - uppdateringsoperation row_filter_option = 'alla med sammanslagning' 'D' - borttagningsoperation 'M' – antingen insättningsoperation eller uppdateringsoperation |
| <Kolumner från @update_flag_list> | bit | En bitflagga som namnges genom att lägga till _uflag i kolumnnamnet. Flaggan får ett icke-NULL-värde endast när row_filter_option= 'alla med mask' och __CDC_OPERATION = 'UN'. Den sätts till 1 om motsvarande kolumn ändrades inom frågefönstret. Annars, 0. |
Anmärkningar
Funktionen fn_net_changes_<capture_instance> fungerar som en wrapper för cdc.fn_cdc_get_net_changes_<capture_instance> frågefunktionen. Den lagrade sys.sp_cdc_generate_wrapper proceduren används för att skapa skriptet för wrappern.
Wrapper-funktioner skapas inte automatiskt. Det finns två saker du måste göra för att skapa wrapper-funktioner:
Kör den lagrade proceduren för att generera skriptet som skapar wrappern.
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.
Den resultatmängd som returneras av net-förändringarnas wrapper-funktion returnerar endast de spårade kolumner som fanns i när @column_list 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 net changes-wrappern kommer bitflaggorna alltid att vara NULL om den @row_filter_option som används i anropet till wrapperfunktionen är 'all' eller 'all with merge'. Om är @row_filter_option satt till 'alla med mask', och __CDC_OPERATION är 'D' eller 'I', kommer flaggans värde också att vara NULL. Om __CDC_OPERATION är 'UN' sätts flaggan till 1 eller 0, beroende på om nätuppdateringsoperationen 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.