CDC-stroomonderdelen
van toepassing op:SQL Server
SSIS Integration Runtime in Azure Data Factory
Belangrijk
CDC-stroomonderdelen, waaronder CDC-besturingstaak, CDC-bron en CDC-splitter, worden afgeschaft. Raadpleeg de aankondigingvoor meer informatie.
De Change Data Capture Components by Attunity for Microsoft SQL Server 2019 Integration Services (SSIS) helpen SSIS-ontwikkelaars met CDC te werken en de complexiteit van CDC-pakketten te verminderen.
De SSIS CDC-onderdelen zijn ontworpen voor gebruik met de SQL Server CDC-functie waarbij de brontabellen dezelfde SQL Server-database of een Oracle-database zijn (wanneer u de Oracle CDC-service voor SQL Server gebruikt). Gepartitioneerde tabellen worden ondersteund.
De onderdelen omvatten onderdelen voor beheer en gegevensstroom die de ervaring van het lezen en verwerken van wijzigingsgegevens in SSIS-pakketten stroomlijnen. De onderdelen kunnen worden toegevoegd aan de onderdeelbibliotheek in Microsoft SQL Server, maar worden afzonderlijk geïnstalleerd.
Hier volgen de Change Data Capture-componenten van Attunity:
CDC-besturingsstroomonderdeel:
CDC-gegevensstroomonderdelen:
Installatie
In deze sectie worden de installatieprocedures voor cdc-onderdelen voor Microsoft SQL Server 2019 Integration Services (SSIS) beschreven.
De CDC-componenten voor SSIS worden geleverd met de Microsoft Change Data Capture Designer en Service voor Oracle door Attunity voor SQL Server. Deze download maakt deel uit van het SQL Server Feature Pack. Download onderdelen van het Feature Pack op de webpagina van het SQL Server 2016 Feature Pack.
Versieondersteuning
Ondersteuning voor SQL Server-versies
De CDC-onderdelen voor SSIS worden ondersteund in alle ondersteunde versies van Microsoft SQL Server. Momenteel bevatten de ondersteunde versies van SQL Server SQL Server 2012 tot en met SQL Server 2017.
Ondersteuning voor besturingssysteemversies
De CDC-onderdelen voor SSIS worden ondersteund op de volgende besturingssystemen en platforms:
- Windows 8 en 8.1
- Windows 10
- Windows Server 2012 en 2012 R2
- Windows Server 2016
Het installatieprogramma uitvoeren
Voordat u de installatiewizard uitvoert, moet u ervoor zorgen dat de SQL Server SQL Server Data Tools is gesloten. Volg vervolgens de aanwijzingen in de installatiewizard.
SSIS-service opnieuw starten
Nadat u de CDC-onderdelen hebt geïnstalleerd, moet u de SSIS-service opnieuw opstarten om ervoor te zorgen dat de onderdelen correct werken bij het ontwikkelen van pakketten in SQL Server Data Tools.
Er wordt een bericht weergegeven nadat u de onderdelen hebt geïnstalleerd. Klik op Ja wanneer hierom wordt gevraagd.
De Microsoft CDC-onderdelen verwijderen
U de-installeert de CDC-bron, de CDC-splitstaak of de CDC-controle taak met de uninstall wizard. Als u de SQL Server SQL Server Data Tools voor pakketontwikkeling gebruikt, controleert u of de SQL Server Data Tools is gesloten voordat u de installatiewizard uitvoert.
Voordelen
Met de CDC-componenten voor SQL Server Integration Services (SSIS) kunnen ontwikkelaars eenvoudig SSIS-pakketten bouwen om wijzigingsgegevens te verwerken. Deze onderdelen verbeteren de mogelijkheid van SSIS-ontwikkelaars om met CDC om te gaan en de complexiteit van CDC-pakketten te verminderen.
De SSIS CDC-onderdelen worden gebruikt om de wijzigingsgegevens op een manier te bieden die eenvoudig kan worden verwerkt voor replicatie, het laden van een datawarehouse, het bijwerken van langzaam veranderende dimensies voor OLAP, het controleren van wijzigingen of voor aanvullende mogelijke toepassingen. Het type verdere verwerking dat wordt gebruikt, wordt bepaald door de SSIS-ontwikkelaar.
De SSIS CDC-onderdelen zijn ontworpen om te werken met de SQL Server CDC-functie met wijzigingstabellen die zich in dezelfde SQL Server-database bevinden.
Aan de slag met de onderdelen van Change Data Capture
Een typisch CDC-pakket verwerkt wijzigingen in een groep tabellen. Het basisstroomgedeelte van dit type CDC-pakket wordt weergegeven in de volgende afbeelding. Dit pakket wordt een trickle-feed-verwerkingspakket genoemd.
Deze SQL Server Integration Services-controlestroom bevat twee CDC-besturingstaken en de gegevensstroomtaak. Met de eerste taak CDC-verwerkingsbereik ophalen wordt het LSN-bereik vastgelegd voor de wijzigingen die worden verwerkt in de gegevensstroomtaak met de naam Proceswijzigingen. Dit bereik wordt ingesteld op basis van wat is verwerkt tijdens de laatste pakketuitvoering en is opgeslagen in een permanente opslag.
Zie voor meer informatie over het gebruik van de CDC-besturingstaak, CDC-besturingstaak en CDC-besturingselementeditor.
In de volgende afbeelding ziet u de Proceswijzigingen gegevensstroom, die conceptueel laat zien hoe de wijzigingen worden verwerkt.
De stappen in deze afbeelding zijn:
Wijzigingen voor tabel X- is een CDC-bron die wijzigingen leest die in tabel X zijn aangebracht binnen het CDC-verwerkingsbereik dat in de bovenliggende controlestroom is bepaald.
CDC Splitter X- wordt gebruikt om de wijzigingen op te splitsen in invoegingen, verwijderingen en updates. In dit scenario wordt ervan uitgegaan dat de CDC-bron is geconfigureerd voor het produceren van netwijzigingen, zodat verschillende wijzigingstypen parallel kunnen worden verwerkt.
De specifieke wijzigingen worden vervolgens verder verwerkt downstream. In deze afbeelding worden de wijzigingen ingevoegd in tabellen met behulp van meerdere ODBC-bestemmingen, maar in werkelijkheid kan de verwerking verschillen.
Zie voor meer informatie over de CDC-bron:
CDC-broneditor (verbindingsbeheerpagina)
CDC-broneditor (kolommenpagina)
CDC Broneditor (Foutuitvoerpagina)
Zie voor meer informatie over de CDC Splitter:
Een van de basisproblemen die aandacht vereisen bij het bouwen van CDC-pakketten is hoe de wijzigingsverwerking communiceert met het initiële laden (of de initiële verwerking) van de gegevens.
De CDC-onderdelen ondersteunen drie afzonderlijke scenario's voor het initiële laden en het verwerken van veranderingen.
Het initiële laden is voltooid met een momentopname van de database. In dit geval begint de wijzigingsverwerking met de LSN van de momentopname-gebeurtenis.
Initieel laden vanuit een stilzerende database. In dit geval worden er geen wijzigingen aangebracht tijdens het initiële laden, zodat de huidige LSN op een gegeven moment tijdens de initiële belasting wordt genomen en de wijzigingsverwerking begint met die LSN.
Initieel laden vanuit een actieve database. In dit geval worden, wanneer de eerste belasting wordt uitgevoerd, wijzigingen aangebracht in de database en is er geen enkele LSN waaruit wijzigingsverwerking nauwkeurig kan worden gestart. In dit geval kan de ontwikkelaar van het eerste laadpakket een voorbeeld nemen van de huidige LSN van de brondatabase vóór en na de eerste belasting. Wanneer wijzigingen worden verwerkt, moet u er vervolgens voor zorgen dat wijzigingen die parallel aan de initiële belasting zijn aangebracht, worden verwerkt, omdat sommige van de verwerkte wijzigingen al in de eerste belasting worden gezien (een wijziging invoegen kan bijvoorbeeld mislukken met een dubbele-sleutelfout omdat de ingevoegde rij is gelezen door het initiële laadproces).
In de volgende afbeelding ziet u een SSIS-pakket dat de eerste twee scenario's kan verwerken:
In de volgende afbeelding ziet u een SSIS-pakket dat het derde scenario kan verwerken:
Na het initiële laadpakket wordt een updatepakket met iteratieve updates herhaaldelijk uitgevoerd volgens een schema om wijzigingen te verwerken zodra deze beschikbaar zijn voor gebruik.
Het doorgeven van de status van de CDC-verwerking van het initieel laadpakket aan het trickle-feedpakket en tussen verschillende taken binnen elk pakket vindt plaats door middel van een speciale SSIS-pakketreeksvariabele. De waarde van deze variabele wordt de CDC-status genoemd, die de huidige status van CDC-verwerking weerspiegelt voor de groepen tabellen die worden verwerkt door de initiële load- en trickle-feedpakketten.
De waarde van de variabele CDC-status moet worden onderhouden in permanente opslag. Het moet worden gelezen voordat cdc-verwerking wordt gestart en moet worden opgeslagen met de huidige status nadat de verwerking is voltooid. De taak voor het laden en opslaan van de CDC-status kan worden verwerkt door de SSIS-ontwikkelaar, maar het CDC Control-onderdeel kan deze taak automatiseren door de cdc-statuswaarde in een databasetabel te behouden.
Beveiligingsoverwegingen
In deze sectie vindt u enkele beveiligingsoverwegingen met betrekking tot het gebruik van de CDC-onderdelen in SSIS.
Toegangsautorisatie om gegevens te wijzigen
Updatepakketten voor trickle-feed hebben toegang nodig tot SQL Server CDC-functies. Dergelijke toegang wordt standaard verleend aan leden van de db_owner vaste databaserol. Omdat de db_owner een krachtige rol is, wordt het aanbevolen bij het definiëren van capture-exemplaren in SQL Server een gating-beveiligingsrol te koppelen aan elk capture-exemplaar waarmee het SSIS CDC-pakket een veel beperktere gebruiker kan gebruiken voor het verwerken van de wijzigingen.
Toegang tot CDC Database Huidige LSN
De CDC-beheer taakbewerkingen voor het markeren van de start LSN voor wijzigingsverwerking moeten de actuele LSN van de CDC-database kunnen vinden. De onderdelen vinden de LSN met behulp van de procedure sp_replincrementlsn uit de hoofddatabase. Uitvoeringsmachtiging voor deze procedure moet worden gegeven aan de inloggegevens die worden gebruikt om in te loggen op de SQL Server CDC-database.
Toegang tot cdc-statentabel
De tabel CDC States wordt gebruikt voor het automatisch persistent maken van CDC-staten die moeten worden bijgewerkt door de aanmelding die wordt gebruikt voor het maken van verbinding met de SQL Server CDC-database. Als deze tabel wordt gemaakt door de SSIS-ontwikkelaar, stelt u de systeembeheerder van SQL Server in als een gebruiker die gemachtigd is om SQL Server-databases te maken en beheer- en onderhoudstaken uit te voeren. Daarnaast moet een systeembeheerder van SQL Server die met CDC-databases werkt, op de hoogte zijn van SQL Server CDC-technologie en -implementatie.
Tabellen groeperen voor CDC-verwerking
Databaseprojecten variëren van verschillende tabellen tot vele duizenden tabellen. Bij het ontwerpen van initiële belasting en CDC-pakketten is het handig om tabellen in veel kleinere groepen te groeperen voor eenvoudiger beheer en efficiëntie. In deze sectie vindt u verschillende overwegingen die van invloed zijn op het sorteren van tabellen in kleine groepen, waarbij de tabellen in elke tabel in eerste instantie worden geladen en vervolgens worden bijgewerkt als een groep.
Bij de CDC-patronen die door de CDC-onderdelen worden ondersteund, wordt ervan uitgegaan dat deze groepering al is bepaald. Elke groep definieert een afzonderlijke CDC-context die afzonderlijk van andere groepen wordt onderhouden. Voor elke groep worden updatepakketten voor initiële lading en trickle-feed gemaakt. Updates voor trickle-feed worden gepland voor periodieke uitvoeringen op basis van de snelheid van wijzigingsverwerkingsbeperkingen (bijvoorbeeld CPU- en IO-verbruik, invloed op andere systemen) en de gewenste latentie.
Tabellen worden gegroepeerd op basis van de volgende overwegingen:
Volgens de doelgegevensbank. Alle tabellen die naar verschillende doeldatabases worden geschreven of een andere verwerking ondergaan, moeten worden toegewezen aan verschillende CDC-groepen.
Tabellen die te maken hebben met referentiële integriteitsbeperkingen moeten worden toegewezen aan dezelfde groep om problemen met referentiële integriteit bij de doelomgeving te voorkomen.
Tabellen waarvoor een hogere latentie kan worden getolereerd, kunnen worden gegroepeerd, zodat ze minder vaak kunnen worden verwerkt en de totale systeembelasting kunnen verminderen.
Tabellen waarvoor een hogere wijzigingssnelheid geldt, moeten zich in kleinere groepen bevinden en tabellen met een lage wijzigingssnelheid kunnen worden gegroepeerd in grotere groepen.
De volgende twee pakketten worden gemaakt voor elke CDC-groep:
Een eerste laadpakket, dat het hele gegevensbereik uit de brontabellen leest en toepast op de doeltabellen.
Een updatepakket voor trickle-feed waarmee wijzigingen in de brontabellen worden gelezen en de wijzigingen worden toegepast op de doeltabellen. Dit pakket moet regelmatig worden uitgevoerd.
CDC-toestand
Aan elke CDC-groep is een status gekoppeld, die wordt vertegenwoordigd door een tekenreeks met een specifieke indeling. Zie CDC Control Taskvoor meer informatie. In de volgende tabel ziet u de mogelijke CDC-statuswaarden.
Staat | Beschrijving |
---|---|
0-(INITIAL) | De status die bestaat voordat pakketten worden uitgevoerd op de huidige CDC-groep. Dit is ook de status wanneer de CDC-status leeg is. Zie CDC Control Taskvoor meer informatie over taakbewerkingen voor CDC-beheer. |
1-ILSTART (Initial-Load-Started) | Dit is de status die bestaat wanneer het eerste laadpakket wordt gestart. Dit gebeurt na de MarkInitialLoadStart bewerkingsaanroep naar de CDC-besturingselementtaak. Zie CDC Control Taskvoor meer informatie over taakbewerkingen voor CDC-beheer. |
2- ILEND (initial-Load-Ended) | Dit is de staat die ontstaat wanneer het initiële laadpakket succesvol wordt voltooid. Dit gebeurt na de aanroep van de MarkInitialLoadEnd-bewerking naar de CDC-besturingselementtaak. Zie CDC Control Taskvoor meer informatie over taakbewerkingen voor CDC-beheer. |
3-ILUPDATE (initiële laadupdate) | Dit is de status die bestaat na de eerste uitvoering van het updatepakket na het eerste laden terwijl het initiële verwerkingsgebied nog steeds wordt verwerkt. Dit gebeurt na de GetProcessingRange bewerkingsaanroep naar de CDC-besturingstaak. Als u de kolom _$reprocessing gebruikt, wordt deze ingesteld op 1 om aan te geven dat het pakket mogelijk rijen die zich al op het doel bevinden, opnieuw verwerkt. Zie CDC Control Taskvoor meer informatie over taakbewerkingen voor CDC-beheer. |
4-TFEND (Trickle-Feed-Update-Ended) | Dit is de verwachte status voor reguliere CDC-runs. Hiermee wordt aangegeven dat de vorige uitvoering is voltooid en dat een nieuwe uitvoering met een nieuw verwerkingsbereik kan worden gestart. |
5-TFSTART (Trickle-Feed-Update-Started) | Dit is de status die bestaat bij volgende uitvoeringen van het updatepakket na de GetProcessingRange bewerkingsaanroep naar de CDC-besturingstaak. Dit geeft aan dat een reguliere CDC-taak is gestart, maar niet correct is afgerond of nog niet goed is afgerond (MarkProcessedRange). Zie CDC Control Taskvoor meer informatie over taakbewerkingen voor CDC-beheer. |
6-TFREDO (Herverwerking-Druppel-Feed-Updates) | Dit is de status van een GetProcessingRange die plaatsvindt na TFSTART. Dit geeft aan dat de vorige uitvoering niet succesvol is voltooid. Als u de kolom __$reprocessing gebruikt, is deze ingesteld op 1 om aan te geven dat het pakket mogelijk rijen die zich al in het doel bevinden, opnieuw verwerkt. |
7-FOUT | De CDC-groep heeft de status ERROR. |
Hier volgt het statusdiagram voor de CDC-onderdelen. De foutstatus wordt bereikt wanneer een status wordt bereikt die niet wordt verwacht. De verwachte statussen worden geïllustreerd in het volgende diagram. In het diagram wordt echter niet de foutstatus weergegeven.
Als u bijvoorbeeld aan het einde van een eerste laadpakket de status probeert in te stellen op ILEND, als de status TFSTART is, heeft de CDC-groep een foutstatus en wordt het Trickle-Feed Update-pakket niet uitgevoerd (het eerste laadpakket wordt uitgevoerd).
Zodra het eerste laadpakket is uitgevoerd, wordt het Trickle-Feed Update-pakket herhaaldelijk uitgevoerd onder een vooraf bepaald schema om wijzigingen in de brontabellen te verwerken. Elke uitvoering van het Trickle-Feed Update-pakket is een CDC-uitvoering.
In deze sectie
Gerelateerde taken
Verwante inhoud
Technisch artikel over het installeren van Microsoft SQL Server 2012 Change Data Capture voor Oracle, door Attunity, op social.technet.microsoft.com.
Technisch artikel, Configuratieproblemen oplossen in Microsoft Change Data Capture voor Oracle door Attunity, op social.technet.microsoft.com.
Technisch artikel Problemen met CDC-exemplaren aanpakken in Microsoft Change Data Capture voor Oracle by Attunityop social.technet.microsoft.com.
Video, CDC voor Oracle Databases met SQL Server Integration Services 2012 (SQL Server Video), op technet.microsoft.com.