Dela via


CDC-kontrolluppgift

gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Viktigt!

CDC Flow-komponenter, inklusive CDC Control Task, CDC Source och CDC Splitter, är inaktuella. Information finns i meddelandet.

CDC-kontrolluppgiften används för att kontrollera livscykeln för CDC-paket (Change Data Capture). Den hanterar synkroniseringen av CDC-paketet med det inledande inläsningspaketet samt hanteringen av LSN-intervall (Log Sequence Number) som bearbetas under en körning av CDC-paketet. Dessutom hanterar CDC-kontrolluppgiften felscenarier och återställning.

CDC-kontrolluppgiften upprätthåller cdc-paketets tillstånd i en SSIS-paketvariabel och kan också bevara det i en databastabell så att tillståndet underhålls över paketaktiveringar och mellan flera paket som tillsammans utför en gemensam CDC-process (till exempel kan en uppgift vara ansvarig för den första inläsningen och den andra för uppdateringarna av trickle-feed).

CDC-kontrolluppgiften stöder två åtgärdsgrupper. En grupp hanterar synkroniseringen av den inledande belastningen och ändringsbearbetningen, och den andra hanterar ändringsbearbetningsintervallet för LSN för en körning av ett CDC-paket och håller reda på vad som bearbetades korrekt.

Följande åtgärder hanterar synkroniseringen av den inledande belastningen och ändringsbearbetningen:

Verksamhet Beskrivning
ÅterställCdcStatus Den här åtgärden används för att återställa det beständiga CDC-tillstånd som är associerat med den aktuella CDC-kontexten. När den här åtgärden har körts blir det aktuella maximala LSN från tabellen LSN-timestamp sys.fn_cdc_get_max_lsn början på intervallet för nästa bearbetningsintervall. Den här åtgärden kräver en anslutning till källdatabasen.
MarkInitialLoadStart Den här åtgärden används i början av ett initialinläsningspaket för att registrera det aktuella LSN:et i källdatabasen innan det inledande inläsningspaketet börjar läsa källtabellerna. Detta kräver en anslutning till källdatabasen för att anropa sys.fn_cdc_get_max_lsn.

Om du väljer MarkInitialLoadStart när du arbetar med SQL Server CDC (dvs. inte Oracle) måste användaren som anges i anslutningshanteraren vara antingen db_owner eller sysadmin.
MarkInitialLoadEnd Den här åtgärden används i slutet av ett initialinläsningspaket för att registrera det aktuella LSN:et i källdatabasen när det inledande inläsningspaketet har läst källtabellerna. Detta LSN bestäms genom att registrera den aktuella tiden när den här åtgärden inträffade och sedan köra frågor mot mappningstabellen cdc.lsn_time_i CDC-databasen och leta efter en ändring som inträffade efter den tiden.

Om du väljer MarkInitialLoadEnd när du arbetar med SQL Server CDC (dvs. inte Oracle) måste användaren som anges i anslutningshanteraren vara antingen db_owner eller sysadmin.
MarkCdcStart Den här åtgärden används när den första inläsningen görs från en ögonblicksbilddatabas. I det här fallet bör bearbetningen av ändringar starta omedelbart efter snapshot LSN. Du kan ange namnet på den ögonblicksbilddatabas som ska användas och CDC Control-uppgiften frågar SQL Server efter ögonblicksbildens LSN. Du kan också välja att ange ögonblicksbildens LSN direkt.

Om du väljer MarkCdcStart när du arbetar med SQL Server CDC (dvs., inte Oracle) måste användaren som anges i anslutningshanteraren vara antingen db_owner eller sysadmin.

Följande åtgärder används för att hantera bearbetningsintervallet:

Verksamhet Beskrivning
HämtaBearbetningsområde Den här åtgärden används innan dataflödet som använder CDC-källdataflödet anropas. Det etablerar ett intervall av LSN:er som CDC-källdataflödet läser när det anropas. Intervallet lagras i en SSIS-paketvariabel som används av CDC-källan under dataflödesbearbetningen.

Mer information om de tillstånd som lagras finns i Definiera en tillståndsvariabel.
MarkeraBearbetadIntervall : Den här åtgärden körs efter varje CDC-körning (efter att CDC-dataflödet har slutförts) för att registrera den senaste LSN som bearbetades fullständigt i CDC-körningen. Nästa gång GetProcessingRange körs är den här positionen början på bearbetningsintervallet.

Hantera CDC-tillståndsbeständighet

CDC-kontrolluppgiften upprätthåller ett beständigt tillstånd mellan aktiveringar. Informationen som lagras i CDC-tillståndet används för att fastställa och underhålla bearbetningsintervallet för CDC-paketet och för att identifiera feltillstånd. Det beständiga tillståndet lagras som en sträng. Mer information finns i Definiera en tillståndsvariabel.

CDC-kontrolluppgiften stöder två typer av tillståndsbeständighet

  • Manuell tillståndsbeständighet: I det här fallet hanterar CDC-kontrolluppgiften tillståndet som lagras i en paketvariabel, men paketutvecklaren måste läsa variabeln från ett beständigt arkiv innan den anropar CDC-kontrollen och sedan skriva tillbaka den till det beständiga arkivet när CDC-kontrollen senast anropas och CDC-körningen har slutförts.

  • Automatisk tillståndsbeständighet: CDC-tillståndet lagras i en tabell i en databas. Tillståndet lagras under ett namn som anges i egenskapen StateName i en tabell med namnet i egenskapen Table to Use for Storing State ,som finns i en vald anslutningshanterare för lagring av tillståndet. Standardvärdet är källanslutningshanteraren, men det vanliga är att den är målanslutningshanteraren. CDC-kontrolluppgiften uppdaterar tillståndsvärdet i tillståndstabellen och detta genomförs som en del av den omgivande transaktionen.

Felhantering

CDC-kontrolluppgiften kan rapportera ett fel när:

  • Det går inte att läsa det beständiga CDC-tillståndet eller när uppdateringen av det beständiga tillståndet misslyckas.

  • Det går inte att läsa den aktuella LSN-informationen från källdatabasen.

  • CDC-tillståndsläsningen är inte konsekvent.

I alla dessa fall rapporterar CDC-kontrolluppgiften ett fel som kan hanteras på standard sätt som SSIS hanterar kontrollflödesfel.

CDC-kontrolluppgiften kan också rapportera en varning när åtgärden Hämta bearbetningsintervall anropas direkt efter en annan Get Processing Range-åtgärd utan att Mark Processed Range anropas. Det här är en indikation på att den föregående körningen misslyckades eller att ett annat CDC-paket kan köras med samma CDC-tillståndsnamn.

Konfigurera CDC-kontrolluppgiften

Du kan ange egenskaper via SSIS Designer eller programmatiskt.

I det här avsnittet

Definiera en tillståndsvariabel

CDC Kontrolluppgiftsredigerare

Använd dialogrutan CDC Control Task Editor för att konfigurera CDC-kontrollaktiviteten. Cdc Control-uppgiftskonfigurationen omfattar att definiera en anslutning till CDC-databasen, CDC-uppgiftsåtgärden och information om tillståndshantering.

Mer information om CDC-kontrolluppgiften finns i CDC-kontrolluppgift.

Så här öppnar du CDC-kontrolluppgiftsredigeraren

  1. Öppna SQL Server 2019 Integration Services-paketet (SSIS) som har CDC-kontrolluppgiften i SQL Server Data Tools.

  2. Dubbelklicka på CDC-kontrollaktiviteten på fliken Kontrollflöde .

Alternativ

SQL Server CDC-databas ADO.NET-anslutnings-hanterare
Välj en befintlig anslutningshanterare i listan eller klicka på Ny för att skapa en ny anslutning. Anslutningen måste vara till en SQL Server-databas som är aktiverad för CDC och där den valda ändringstabellen finns.

CDC-kontrollåtgärd
Välj den åtgärd som ska köras för den här uppgiften. Alla åtgärder använder tillståndsvariabeln som lagras i en SSIS-paketvariabel som lagrar tillståndet och skickar det mellan de olika komponenterna i paketet.

  • Markera inledande inläsningsstart: Den här åtgärden används när du kör en första inläsning från en aktiv databas utan en ögonblicksbild. Det anropas i början av ett initialt inläsningspaket för att registrera det aktuella LSN:et i källdatabasen innan det inledande inläsningspaketet börjar läsa källtabellerna. Detta kräver en anslutning till källdatabasen.

    Om du väljer Markera inledande inläsningsstart när du arbetar med SQL Server CDC (dvs. inte Oracle) måste användaren som anges i anslutningshanteraren vara antingen db_owner eller sysadmin.

  • Markera den inledande inläsningsänden: Den här åtgärden används när du kör en inledande inläsning från en aktiv databas utan en ögonblicksbild. Det anropas i slutet av ett initialinläsningspaket för att registrera det aktuella LSN:et i källdatabasen när det inledande inläsningspaketet har läst källtabellerna. Detta LSN bestäms genom att registrera den nuvarande tiden när den här åtgärden inträffade för att sedan söka i mappningstabellen cdc.lsn_time_ i CDC-databasen efter en ändring som inträffade efteråt

    Om du väljer Markera initial inläsningsslut när du arbetar med SQL Server CDC (dvs. inte Oracle) måste användaren som anges i anslutningshanteraren vara antingen db_owner eller sysadmin.

  • Markera CDC-start: Den här åtgärden används när den första inläsningen sedan görs från en ögonblicksbilddatabas eller från en quiescence-databas. Den anropas vid vilken punkt som helst inom det initiala inläsningspaketet. Åtgärden accepterar en parameter som kan vara en ögonblicksbilds-LSN, ett namn på en ögonblicksbilddatabas (från vilken ögonblicksbildens LSN härleds automatiskt) eller som kan lämnas tom, i vilket fall den aktuella databasenS LSN används som start-LSN för ändringsbearbetningspaketet.

    Den här åtgärden används i stället för Mark Initial Load Start/End-åtgärder.

    Om du väljer Mark CDC Start when working on SQL Server CDC (dvs. inte Oracle) måste användaren som anges i anslutningshanteraren vara antingen db_owner eller sysadmin.

  • Hämta bearbetningsintervall: Den här åtgärden används i ett ändringsbearbetningspaket innan dataflödet som använder CDC-källdataflödet anropas. Det etablerar ett intervall av LSN:er som CDC-källdataflödet läser när det anropas. Intervallet lagras i en SSIS-paketvariabel som används av CDC-källan under dataflödesbearbetningen.

    Mer information om möjliga CDC-tillstånd som lagras finns i Definiera en tillståndsvariabel.

  • Markera bearbetat intervall: Den här åtgärden används i ett ändringsbearbetningspaket i slutet av en CDC-körning (efter att CDC-dataflödet har slutförts) för att registrera det sista LSN som bearbetades fullständigt i CDC-körningen. Nästa gång GetProcessingRange körs avgör den här positionen början av nästa bearbetningsintervall.

  • Återställ CDC-tillstånd: Den här åtgärden används för att återställa det beständiga CDC-tillstånd som är associerat med den aktuella CDC-kontexten. När den här åtgärden har körts blir det aktuella maximala LSN från tabellen LSN-timestamp sys.fn_cdc_get_max_lsn början på intervallet för nästa bearbetningsintervall. Den här åtgärden kräver en anslutning till källdatabasen.

    Ett exempel på när den här åtgärden används är när du bara vill bearbeta de nyligen skapade ändringsposterna och ignorera alla gamla ändringsposter.

Variabel som innehåller CDC-tillståndet
Välj den SSIS-paketvariabel som lagrar tillståndsinformationen för aktivitetsåtgärden. Du bör definiera en variabel innan du börjar. Om du väljer Automatisk tillståndsbeständighet läses tillståndsvariabeln in och sparas automatiskt.

Mer information om hur du definierar tillståndsvariabeln finns i Definiera en tillståndsvariabel.

SQL Server LSN för att starta CDC/Snapshot-namnet:
Ange den aktuella källdatabasens LSN eller namnet på den ögonblicksbildsdatabas som den första belastningen utförs från för att avgöra var CDC startar. Detta är endast tillgängligt om CDC-kontrollåtgärden är inställd på Mark CDC Start.

Mer information om dessa åtgärder finns i CDC-kontrolluppgift

Lagra tillstånd automatiskt i en databastabell
Markera den här kryssrutan för cdc-kontrollaktiviteten för att automatiskt hantera inläsning och lagring av CDC-tillståndet i en tillståndstabell som finns i den angivna databasen. När det inte är valt måste utvecklaren läsa in CDC-tillståndet när paketet startar och spara det när CDC-tillståndet ändras.

Anslutningshanteraren för databasen där tillståndet lagras
Välj en befintlig ADO.NET anslutningshanterare i listan eller klicka på Ny för att skapa en ny anslutning. Den här anslutningen är till en SQL Server-databas som innehåller tabellen Tillstånd. Tabellen Delstat innehåller delstatsinformation.

Detta är endast tillgängligt om Automatisk tillståndsbeständighet har valts och det är en obligatorisk parameter.

Tabell att använda för att lagra tillstånd
Ange namnet på den tillståndstabell som ska användas för att lagra CDC-tillståndet. Den angivna tabellen måste ha två kolumner som kallas namn och tillstånd och båda kolumnerna måste vara av datatypen varchar (256).

Du kan också välja Ny för att hämta ett SQL-skript som skapar en ny tillståndstabell med de kolumner som krävs. När Automatisk tillståndsbeständighet har valts måste utvecklaren skapa en tillståndstabell enligt kraven som anges ovan.

Detta är endast tillgängligt om Automatisk tillståndsbeständighet har valts och det är en obligatorisk parameter.

Statens namn
Skriv ett namn som ska associeras med det beständiga CDC-tillståndet. Den fullständiga belastningen och CDC-paketen som fungerar med samma CDC-kontext anger ett gemensamt tillståndsnamn. Det här namnet används för att leta upp tillståndsraden i tillståndstabellen