Kommentar
Å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
SSIS Integration Runtime i Azure Data Factory
Important
CDC Flow-komponenter, inklusive CDC Control Task, CDC Source och CDC Splitter, är inaktuella. Mer information finns i meddelandet.
Denna procedur beskriver hur man definierar en paketvariabel där CDC-tillståndet lagras.
CDC:s tillståndsvariabel laddas, initieras och uppdateras av CDC Control-uppgiften och används av CDC Source-dataflödeskomponenten för att bestämma det aktuella bearbetningsintervallet för ändringsposter. CDC-tillståndsvariabeln kan definieras på vilken container som helst som är gemensam för CDC Control-uppgiften och CDC-källan. Detta kan ske på paketnivå men kan också vara på andra behållare som en loopbehållare.
Att manuellt ändra CDC:s tillståndsvariabelvärde rekommenderas inte, men det kan vara användbart för att förstå dess innehåll.
Följande tabell ger en övergripande beskrivning av komponenterna i CDC:s tillståndsvariabelvärde.
| Component | Description |
|---|---|
| <Delstatsnamn> | Detta är namnet på den nuvarande CDC-staten. |
| CS | Detta markerar den aktuella startpunkten för bearbetningsområdet (Current Start). |
| <CS-LSN> | Detta är det sista (loggsekvensnummer) LSN som bearbetades vid föregående CDC-körning. |
| e.Kr. | Detta markerar det aktuella bearbetningsintervallets slutpunkt (nuvarande slut). Närvaron av CE-komponenten i CDC-tillståndet indikerar att antingen ett CDC-paket för närvarande bearbetar eller att ett CDC-paket misslyckades innan dess CDC-bearbetningsområde fullt ut behandlats. |
| <ce-lsn> | Detta är det sista LSN som behandlas i den nuvarande CDC-körningen. Det antas alltid att det sista sekvensnumret som bearbetas är det maximala (0xFFF...). |
| IR | Detta markerar det initiala bearbetningsintervallet. |
| <IR-start> | Detta är en LSN av en förändring precis innan den initiala lasten började. |
| <ir-end> | Detta är ett LSN av en ändring precis efter att den initiala belastningen avslutats. |
| TS | Detta markerar tidsstämpeln för den senaste CDC-uppdateringen i delstaten. |
| <Tidsstämpel> | Detta är en decimalrepresentation av 64-bitarsegenskapen System.DateTime.UtcNow. |
| Akuten | Detta visas när den senaste operationen misslyckades och inkluderar en kort beskrivning av orsaken till felet. Om denna komponent finns med kommer den alltid att visas sist. |
| <kort-fel-text> | Detta är den korta felbeskrivningen. |
LSN och sekvensnummer kodas var och en som en hexadecimal sträng med upp till 20 siffror som representerar LSN-värdet för Binary(10).
Följande tabell beskriver möjliga CDC-tillståndsvärden.
| Tillstånd | Description |
|---|---|
| (INITIAL) | Detta är det initiala tillståndet innan något paket kördes på den nuvarande CDC-gruppen. Detta är också tillståndet när CDC-staten är tom. |
| ILSTART (Initial belastning påbörjad) | Detta är tillståndet när det initiala laddningspaketet startar, efter MarkInitialLoadStart-anropet till CDC Control-uppgiften. |
| ILEND (Initial belastning avslutad) | Detta är tillståndet när det initiala lastpaketet avslutas framgångsrikt, efter MarkInitialLoadEnd-anropet till CDC Control-uppgiften. |
| ILUPDATE (Initial Load Update) | Detta är tillståndet för körningarna av trickle feed-uppdateringspaketet efter den initiala belastningen, samtidigt som det initiala bearbetningsområdet fortfarande bearbetas. Detta sker efter GetProcessingRange-anropet till CDC Control-uppgiften. Om du använder kolumnen __$reprocessing är den satt till 1 för att indikera att paketet kan bearbeta rader som redan är vid målet. |
| TFEND (Trickle-Feed uppdatering avslutad) | Detta är det tillstånd som förväntas för regelbundna CDC-körningar. Det anger att den tidigare körningen har slutförts och att en ny körning med ett nytt bearbetningsintervall kan startas. |
| TFSTART | Detta är tillståndet för en icke-initial körning av trickle feed-uppdateringspaketet, efter GetProcessingRange-anropet till CDC Control-uppgiften. Detta indikerar att en vanlig CDC-körning har påbörjats men inte är avslutad eller ännu inte är klar, rent (MarkProcessedRange). |
| TFREDO (Ombearbetning Trickle-Feed Uppdateringar) | Det här är tillståndet på en GetProcessingRange- som inträffar efter TFSTART. Detta indikerar att den tidigare körningen inte slutfördes framgångsrikt. Om du använder kolumnen __$reprocessing är den satt till 1 för att indikera att paketet kan bearbeta rader som redan är vid målet. |
| FEL | CDC-gruppen är i ett felaktigt tillstånd. |
Följande är exempel på CDC:s tillståndsvariablevärden.
ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/
ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/
TFEND/CS/0x0000025B000001BC0003/TS/2011-07-17T12:05:58.1001145/
TFSTART/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:43.9344900/
TFREDO/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:59.5544900/
För att definiera en CDC-tillståndsvariabel
I SQL Server Data Tools, öppna SQL Server 2019 Integration Services (SSIS)-paketet som innehåller CDC-flödet där du behöver definiera variabeln.
Välj fliken Package Explorer och lägg till en ny variabel.
Ge variabeln ett namn som du kan känna igen som din tillståndsvariabel.
Ge variabeln en String-datatyp .
Ge inte variabeln ett värde som en del av dess definition. Värdet måste sättas av CDC Control-uppgiften.
Om du planerar att använda CDC Control-uppgiften med Automatic State Persistence, läses CDC State-variabeln från databasens statustabell du anger och uppdateras tillbaka till samma tabell när dess värde ändras. För mer information om State-tabellen, se CDC Control Task och CDC Control Task Editor.
Om du inte använder CDC Control-uppgiften med Automatic State Persistence, måste du ladda variabelvärdet från persistent storage där dess värde sparades senast paketet kördes och skriva tillbaka det till persistenta lagringen när bearbetningen av det aktuella bearbetningsområdet var klar.