Delen via


CDC-beheertaak

van toepassing op:SQL Server SSIS Integration Runtime in Azure Data Factory

Belangrijk

CDC-stroomonderdelen, waaronder CDC-besturingstaak, CDC-bron en CDC-splitter, zijn verouderd verklaard. Details verwijzen naar de aankondiging.

De CDC-beheertaak wordt gebruikt om de levenscyclus van CDC-pakketten (Change Data Capture) te beheren. Het handelt de synchronisatie van CDC-pakket met het initiële laadpakket af, evenals het beheer van LSN-bereiken (Log Sequence Number) die tijdens een uitvoering van een CDC-pakket worden verwerkt. Daarnaast behandelt de CDC-beheertaak foutscenario's en herstel.

De CDC-beheertaak onderhoudt de status van het CDC-pakket in een SSIS-pakketvariabele en kan deze ook in een databasetabel behouden, zodat de status wordt gehandhaafd tussen pakketactiveringen en tussen meerdere pakketten die samen een gemeenschappelijk CDC-proces uitvoeren (bijvoorbeeld één taak kan verantwoordelijk zijn voor het initiële laden en de andere voor de updates van de trickle-feed).

De CDC-beheertaak ondersteunt twee groepen bewerkingen. De ene groep regelt de synchronisatie van de initiële lading en de wijzigingsverwerking, terwijl de andere groep het bereik van LSN's voor wijzigingsverwerking beheert bij een uitvoering van een CDC-pakket en bijhoudt wat er correct is verwerkt.

De volgende bewerkingen verwerken de synchronisatie van de initiële belasting en wijzigingsverwerking:

Operatie Beschrijving
ResetCdcState Deze bewerking wordt gebruikt om de permanente CDC-status die is gekoppeld aan de huidige CDC-context opnieuw in te stellen. Nadat deze bewerking is uitgevoerd, wordt de huidige maximum LSN van de LSN-timestamp sys.fn_cdc_get_max_lsn tabel het begin van het bereik voor het volgende verwerkingsbereik. Voor deze bewerking is een verbinding met de brondatabase vereist.
MarkInitialLoadStart Deze bewerking wordt aan het begin van een initiële-laadpakket gebruikt om de huidige LSN in de brondatabase vast te leggen voordat het initiële-laadpakket begint met het lezen van de brontabellen. Hiervoor is een verbinding met de brondatabase vereist om sys.fn_cdc_get_max_lsnaan te roepen.

Als u MarkInitialLoadStart selecteert wanneer u werkt op SQL Server CDC (dat wil gezegd, niet Oracle), moet de gebruiker die is opgegeven in de verbindingsbeheerder, db_owner of sysadmin zijn.
MarkeerStartLadenEinde Deze bewerking wordt aan het einde van een initiële laad pakket gebruikt om de huidige LSN in de brondatabase vast te leggen nadat het initiële laad pakket is voltooid met het lezen van de brontabellen. Deze LSN wordt bepaald door het vastleggen van de huidige tijd waarop deze bewerking heeft plaatsgevonden en vervolgens een query uit te voeren op de cdc.lsn_time_toewijzingstabel in de CDC-database op zoek naar een wijziging die na die tijd is opgetreden.

Als u MarkInitialLoadEnd selecteert wanneer u werkt op SQL Server CDC (dat wil gezegd, niet Oracle), moet de gebruiker die is opgegeven in de verbindingsbeheerder, db_owner of sysadmin zijn.
MarkCdcStart Deze bewerking wordt gebruikt wanneer het laden voor de eerste keer gebeurt vanuit een snapshotdatabase. In dit geval dient de verwerking van wijzigingen direct na de LSN van de momentopname te starten. U kunt de naam opgeven van de momentopnamedatabase die moet worden gebruikt en de CDC-beheertaak vraagt SQL Server op voor de momentopname-LSN. U hebt ook de mogelijkheid om de LSN van de momentopname rechtstreeks op te geven.

Als u MarkCdcStart selecteert wanneer u werkt op SQL Server CDC (dat wil gezegd, niet Oracle), moet de gebruiker die is opgegeven in het verbindingsbeheer, db_owner of sysadmin zijn.

De volgende bewerkingen worden gebruikt om het verwerkingsbereik te beheren:

Operatie Beschrijving
VerkrijgVerwerkingsBereik Deze bewerking wordt gebruikt voordat u de gegevensstroom aanroept die gebruikmaakt van de CDC-brongegevensstroom. Hiermee wordt een bereik van LSN's vastgesteld waaruit de CDC-brongegevensstroom leest wanneer deze wordt aangeroepen. Het bereik wordt opgeslagen in een SSIS-pakketvariabele die wordt gebruikt door de CDC-bron tijdens het verwerken van gegevensstromen.

Zie Een statusvariabele definiërenvoor meer informatie over de statusstatussen die zijn opgeslagen.
GemarkeerdVerwerktBereik : Deze bewerking wordt uitgevoerd na elke CDC-uitvoering (nadat de CDC-gegevensstroom is voltooid) om de laatste LSN vast te leggen die volledig is verwerkt in de CDC-uitvoering. De volgende keer dat GetProcessingRange wordt uitgevoerd, is deze positie het begin van het verwerkingsbereik.

Persistentie van CDC-status verwerken

De CDC-beheertaak onderhoudt een permanente status tussen activeringen. De informatie die in de CDC-status is opgeslagen, wordt gebruikt om het verwerkingsbereik voor het CDC-pakket te bepalen en te onderhouden en om foutvoorwaarden te detecteren. De permanente status wordt opgeslagen als een tekenreeks. Zie Een statusvariabele definiërenvoor meer informatie.

De CDC-beheertaak ondersteunt twee typen persistentie van de status

  • Handmatige persistentie van de status: in dit geval beheert de CDC-beheertaak de status die is opgeslagen in een pakketvariabele, maar de ontwikkelaar van het pakket moet de variabele lezen uit een permanente opslag voordat het CDC-besturingselement wordt aangeroepen en vervolgens terugschrijven naar die permanente opslag nadat het CDC-besturingselement voor het laatst is aangeroepen en de CDC-uitvoering is voltooid.

  • Persistentie van automatische status: de CDC-status wordt opgeslagen in een tabel in een database. De status wordt opgeslagen onder een naam die is opgegeven in de StateName eigenschap in een tabel die wordt genoemd in de Tabel te gebruiken voor het opslaan van de status eigenschap, die zich in een geselecteerde verbindingsbeheerder voor het opslaan van de status bevindt. De standaardinstelling is het bronverbindingsbeheer, maar de gebruikelijke procedure is dat dit het doelverbindingsbeheer is. De CDC-beheertaak werkt de statuswaarde in de statustabel bij en dit wordt doorgevoerd als onderdeel van de omgevingstransactie.

Foutafhandeling

De CDC-beheertaak kan een fout melden wanneer:

  • De permanente CDC-status kan niet worden gelezen of de permanente status kan niet worden bijgewerkt.

  • De huidige LSN-gegevens uit de brondatabase kunnen niet worden gelezen.

  • De leesstatus cdc is niet consistent.

In al deze gevallen rapporteert de CDC Control-taak een fout die kan worden verwerkt op de standaard manier waarop SSIS controlestroomfouten afhandelt.

De CDC-controletaak kan ook een waarschuwing melden wanneer de bewerking Verwerkingsbereik ophalen direct na een andere Verwerkingsbereik ophalen-bewerking wordt aangeroepen zonder dat het Bereik als verwerkt markeren is uitgevoerd. Dit is een indicatie dat de vorige uitvoering is mislukt of dat een ander CDC-pakket kan worden uitgevoerd met dezelfde CDC-statusnaam.

De CDC-beheertaak configureren

U kunt eigenschappen instellen via SSIS Designer of programmatisch.

In deze sectie

Een statusvariabele definiëren

CDC Control Task Editor

Gebruik het dialoogvenster CDC Control Task Editor om de CDC-besturingselementtaak te configureren. De configuratie van de CDC-beheertaak omvat het definiëren van een verbinding met de CDC-database, de CDC-taakbewerking en de statusbeheergegevens.

Zie CDC Control Taskvoor meer informatie over de CDC-beheertaak.

De CDC Control Task Editor openen

  1. Open in SQL Server Data Tools het SSIS-pakket (SQL Server 2019 Integration Services) met de CDC-beheertaak.

  2. Dubbelklik op de CDC-besturingstaak op het tabblad Control Flow.

Opties

SQL Server CDC-database ADO.NET verbindingsbeheer
Selecteer een bestaand verbindingsbeheer in de lijst of klik op Nieuwe om een nieuwe verbinding te maken. De verbinding moet zijn met een SQL Server-database die is ingeschakeld voor CDC en waar de geselecteerde wijzigingstabel zich bevindt.

CDC-besturingsbewerking
Selecteer de bewerking die u voor deze taak wilt uitvoeren. Alle bewerkingen gebruiken de statusvariabele die is opgeslagen in een SSIS-pakketvariabele die de status opslaat en doorgeeft tussen de verschillende onderdelen in het pakket.

  • begin van de initiële belasting markeren: deze bewerking wordt gebruikt bij het uitvoeren van een initiële belasting vanuit een actieve database zonder momentopname. Het wordt aangeroepen aan het begin van een initiële-laadpakket om de huidige LSN vast te leggen in de brondatabase voordat het initiële-laadpakket de brontabellen begint te lezen. Hiervoor is een verbinding met de brondatabase vereist.

    Als u Eerste laadstart markeren selecteert bij het werken met SQL Server CDC (dat wil zeggen, niet Oracle), moet de gebruiker die is opgegeven in het verbindingsbeheer db_owner of sysadminzijn.

  • eerste laadeinde markeren: deze bewerking wordt gebruikt bij het uitvoeren van een initiële belasting van een actieve database zonder momentopname. Het wordt aangeroepen aan het einde van een initiële-laadpakket om de huidige LSN in de brondatabase vast te leggen nadat het initiële-laadpakket de brontabellen heeft gelezen. Deze LSN wordt bepaald door de huidige tijd op te nemen waarop deze bewerking heeft plaatsgevonden en vervolgens een query uit te voeren op de cdc.lsn_time_toewijzingstabel in de CDC-database op zoek naar een wijziging die na die tijd is opgetreden

    Als u Eerste laadeindteken markeren selecteert wanneer u werkt met SQL Server CDC (dat wil zeggen, niet Oracle), moet de gebruiker die in het verbindingsbeheer is opgegeven db_owner of sysadminzijn.

  • CDC starten: Deze bewerking wordt gebruikt wanneer de initiële lading is gemaakt van een momentopnamedatabase of van een quiescentiedatabase. Het wordt op elk moment binnen het eerste laadpakket aangeroepen. De bewerking accepteert een parameter die een momentopname-LSN kan zijn, een naam van een momentopnamedatabase (van waaruit de momentopname-LSN automatisch wordt afgeleid) of leeg kan blijven, in welk geval de huidige database-LSN wordt gebruikt als de begin-LSN voor het wijzigingsverwerkingspakket.

    Deze bewerking wordt gebruikt in plaats van de bewerkingen voor het markeren van begin- en eindladen.

    Als u CDC Start selecteert wanneer u werkt op SQL Server CDC (dus geen Oracle), moet de gebruiker die in de verbindingsbeheerder is opgegeven, db_owner of sysadminzijn.

  • Verwerkingsbereik ophalen: deze bewerking wordt gebruikt in een wijzigingsverwerkingspakket voordat u de gegevensstroom aanroept die gebruikmaakt van de CDC-brongegevensstroom. Het stelt een bereik van LSN's vast dat door de CDC-brongegevensstroom wordt gelezen wanneer deze wordt aangeroepen. Het bereik wordt opgeslagen in een SSIS-pakketvariabele die wordt gebruikt door de CDC-bron tijdens het verwerken van gegevensstromen.

    Zie Een statusvariabele definiërenvoor meer informatie over de mogelijke CDC-statusstatussen die zijn opgeslagen.

  • Het verwerkte bereik markeren: Deze bewerking wordt gebruikt in een verwerkingspakket voor wijzigingen aan het einde van een CDC-run (nadat de CDC-gegevensstroom succesvol is voltooid) om de laatste LSN vast te leggen die volledig is verwerkt in de CDC-run. De volgende keer dat GetProcessingRange wordt uitgevoerd, bepaalt deze positie het begin van het volgende verwerkingsbereik.

  • CDC-status opnieuw instellen: deze bewerking wordt gebruikt om de permanente CDC-status die aan de huidige CDC-context is gekoppeld, opnieuw in te stellen. Nadat deze bewerking is uitgevoerd, wordt de huidige maximum LSN van de LSN-timestamp sys.fn_cdc_get_max_lsn tabel het begin van het bereik voor het volgende verwerkingsbereik. Voor deze bewerking is een verbinding met de brondatabase vereist.

    Een voorbeeld van wanneer deze bewerking wordt gebruikt, is wanneer u alleen de zojuist gemaakte wijzigingsrecords wilt verwerken en alle oude wijzigingsrecords wilt negeren.

variabele met de CDC-status
Selecteer de SSIS-pakketvariabele waarin de statusgegevens voor de taakbewerking worden opgeslagen. U moet een variabele definiëren voordat u begint. Als u Automatische statuspersistentieselecteert, wordt de statusvariabele geladen en automatisch opgeslagen.

Zie Een statusvariabele definiërenvoor meer informatie over het definiëren van de statusvariabele.

SQL Server LSN om de cdc-/momentopnamenaam te starten:
Typ de huidige brondatabase LSN of de naam van de momentopnamedatabase van waaruit de eerste belasting wordt uitgevoerd om te bepalen waar het CDC begint. Dit is alleen beschikbaar als de CDC-bediening is ingesteld op CDC-start markeren.

Zie CDC Control Task voor meer informatie over deze bewerkingen

de status automatisch opslaan in een databasetabel
Schakel dit selectievakje in voor de CDC-taak om automatisch het laden en opslaan van de CDC-status in een statustabel in de opgegeven database te beheren. Wanneer niet geselecteerd, moet de ontwikkelaar de CDC-status laden wanneer het pakket wordt gestart en opslaan wanneer de CDC-status verandert.

Verbindingsbeheer voor de database waarin de status is opgeslagen
Selecteer een bestaand ADO.NET verbindingsbeheer in de lijst of klik op Nieuw om een nieuwe verbinding te maken. Deze verbinding is met een SQL Server-database die de tabel State bevat. De Staatstabel bevat de staatinformatie.

Dit is alleen beschikbaar als automatische statuspersistentie is geselecteerd en dit een vereiste parameter is.

tabel die moet worden gebruikt voor het opslaan van de status
Typ de naam van de statustabel die moet worden gebruikt voor het opslaan van de CDC-status. De opgegeven tabel moet twee kolommen hebben met de naam naam en staat, en beide kolommen moeten van het gegevenstype varchar (256)zijn.

U kunt desgewenst Nieuwe selecteren om een SQL-script op te halen waarmee een nieuwe state-tabel wordt gebouwd met de vereiste kolommen. Wanneer automatische statuspersistentie is geselecteerd, moet de ontwikkelaar een statustabel maken op basis van de bovenstaande vereisten.

Dit is alleen beschikbaar als automatische statuspersistentie is geselecteerd en dit een vereiste parameter is.

Staat naam
Typ een naam die u aan de permanente CDC-status wilt koppelen. De volledige lading en CDC-pakketten die met dezelfde CDC-context werken, geven een algemene statusnaam op. Deze naam wordt gebruikt voor het opzoeken van de statusrij in de statustabel