Share via


Integration Services-transacties

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

Pakketten maken gebruik van transacties om de databaseacties te binden die taken uitvoeren in atomische eenheden, en door dit te doen, blijven gegevensintegriteit behouden. Alle containertypenpakketten van Microsoft Integration Services, de For Loop-, Foreach-lus- en reekscontainers en de taakhosts die elke taak inkapselen, kunnen worden geconfigureerd voor het gebruik van transacties. Integration Services biedt drie opties voor het configureren van transacties: NotSupported, Supported en Required.

  • Vereist geeft aan dat de container een transactie start, tenzij er al een is gestart door de bovenliggende container. Als er al een transactie bestaat, voegt de container de transactie toe. Als een pakket dat niet is geconfigureerd ter ondersteuning van transacties bijvoorbeeld een reekscontainer bevat die gebruikmaakt van de optie Vereist , start de sequencecontainer een eigen transactie. Als het pakket is geconfigureerd voor het gebruik van de optie Vereist , wordt de reekscontainer gekoppeld aan de pakkettransactie.

  • Ondersteund geeft aan dat de container geen transactie start, maar lid wordt van een transactie die is gestart door de bovenliggende container. Als een pakket met vier Execute SQL-taken bijvoorbeeld een transactie start en alle vier de taken de optie Ondersteund gebruiken, worden de database-updates die door de SQL-taken uitvoeren worden uitgevoerd, teruggedraaid als een taak mislukt. Als het pakket geen transactie start, zijn de vier SQL-taken uitvoeren niet gebonden aan een transactie en worden er geen database-updates, behalve de database-updates die door de mislukte taak worden uitgevoerd, teruggedraaid.

  • NotSupported geeft aan dat de container geen transactie start of lid wordt van een bestaande transactie. Een transactie die door een bovenliggende container is gestart, heeft geen invloed op onderliggende containers die zijn geconfigureerd om transacties niet te ondersteunen. Als een pakket bijvoorbeeld is geconfigureerd om een transactie te starten en een For Loop-container in het pakket de optie NotSupported gebruikt, kan geen van de taken in de For Loop terugdraaien als deze mislukken.

U configureert transacties door de eigenschap TransactionOption in te stellen op de container. U kunt deze eigenschap instellen met behulp van het venster Eigenschappen in SQL Server Data Tools (SSDT), of u kunt de eigenschap programmatisch instellen.

Opmerking

De eigenschap TransactionOption bepaalt of de waarde van de eigenschap IsolationLevel die door een container is aangevraagd, al dan niet wordt toegepast. Zie de beschrijving van de eigenschap IsolationLevel in het onderwerp Pakketeigenschappen instellen voor meer informatie.

Een pakket configureren voor het gebruik van transacties

Wanneer u een pakket configureert voor het gebruik van transacties, hebt u twee opties:

  • Eén transactie voor het pakket hebben. In dit geval is het het pakket zelf dat deze transactie initieert , terwijl afzonderlijke taken en containers in het pakket deelnemen aan deze enkele transactie.

  • Meerdere transacties in het pakket hebben. In dit geval ondersteunt het pakket transacties, maar afzonderlijke taken en containers in het pakket initiëren de transacties daadwerkelijk.

In de volgende procedures wordt beschreven hoe u beide opties configureert.

Een pakket configureren voor het gebruik van één transactie

In deze optie initieert het pakket zelf één transactie. U configureert het pakket om deze transactie te starten door de eigenschap TransactionOption van het pakket in te stellen op Vereist.

Vervolgens moet u specifieke taken en containers in deze enkele transactie opnemen. Als u een taak of container in een transactie wilt inschakelen, stelt u de eigenschap TransactionOption van die taak of container in op Ondersteund.

  1. Open in SQL Server Data Tools (SSDT) het Integration Services-project dat het pakket bevat dat u wilt configureren voor het gebruik van een transactie.

  2. Dubbelklik in Solution Explorer op het pakket om het te openen.

  3. Klik op het tabblad Controlestroom .

  4. Klik met de rechtermuisknop op een willekeurige plaats op de achtergrond van het ontwerpoppervlak van de besturingsstroom en klik vervolgens op Eigenschappen.

  5. Stel in het venster Eigenschappen de eigenschap TransactionOption in op Vereist.

  6. Klik op het ontwerpoppervlak van het tabblad ControlFlow met de rechtermuisknop op de taak of de container die u wilt registreren bij de transactie en klik vervolgens op Eigenschappen.

  7. Stel in het venster Eigenschappen de eigenschap TransactionOption in op Ondersteund.

    Opmerking

    Als u een verbinding in een transactie wilt inschakelen, moet u de taken inschrijven die gebruikmaken van de verbinding in de transactie. Zie SSIS-verbindingen (Integration Services) voor meer informatie.

  8. Herhaal stap 6 en 7 voor elke taak en container die u wilt registreren bij de transactie.

Een pakket configureren voor het gebruik van meerdere transacties

In deze optie ondersteunt het pakket zelf transacties, maar wordt er geen transactie gestart. U configureert het pakket ter ondersteuning van transacties door de eigenschap TransactionOption van het pakket in te stellen op Ondersteund.

Vervolgens configureert u de gewenste taken en containers in het pakket om transacties te initiëren of eraan deel te nemen. Als u een taak of container wilt configureren voor het initiëren van een transactie, stelt u de eigenschap TransactionOption van die taak of container in op Vereist.

  1. Open in SQL Server Data Tools (SSDT) het Integration Services-project dat het pakket bevat dat u wilt configureren voor het gebruik van transaction.s

  2. Dubbelklik in Solution Explorer op het pakket om het te openen.

  3. Klik op het tabblad Controlestroom .

  4. Klik met de rechtermuisknop op een willekeurige plaats op de achtergrond van het ontwerpoppervlak van de besturingsstroom en klik vervolgens op Eigenschappen.

  5. Stel in het venster Eigenschappen de eigenschap TransactionOption in op Ondersteund.

    Opmerking

    Het pakket ondersteunt transacties, maar de transacties worden gestart door taak of containers in het pakket.

  6. Klik op het ontwerpoppervlak van het tabblad ControlFlow met de rechtermuisknop op de taak of de container in het pakket waarvoor u een transactie wilt starten en klik vervolgens op Eigenschappen.

  7. Stel in het venster Eigenschappen de eigenschap TransactionOption in op Vereist.

  8. Als een transactie wordt gestart door een container, klikt u met de rechtermuisknop op de taak of de container die u wilt registreren bij de transactie en klikt u vervolgens op Eigenschappen.

  9. Stel in het venster Eigenschappen de eigenschap TransactionOption in op Ondersteund.

    Opmerking

    Als u een verbinding in een transactie wilt inschakelen, moet u de taken inschrijven die gebruikmaken van de verbinding in de transactie. Zie SSIS-verbindingen (Integration Services) voor meer informatie.

  10. Herhaal stap 6 tot en met 9 voor elke taak en container die een transactie start.

Meerdere transacties in een pakket

Het is mogelijk dat een pakket niet-gerelateerde transacties in een Integration Services-pakket bevat. Telkens wanneer een container in het midden van een geneste containerhiërarchie geen transacties ondersteunt, starten de containers erboven of daaronder in de hiërarchie afzonderlijke transacties als ze zijn geconfigureerd om transacties te ondersteunen. De transacties doorvoeren of terugdraaien op volgorde van de binnenste taak in de geneste containerhiërarchie naar het pakket. Nadat de interne transactie is doorgevoerd, wordt deze echter niet teruggedraaid als een buitenste transactie wordt afgebroken.

Voorbeeld van meerdere transacties in een pakket

Een pakket heeft bijvoorbeeld een reekscontainer met twee Foreach Loop-containers en elke container bevat twee SQL-taken uitvoeren. De sequence-container ondersteunt transacties, de Foreach Loop-containers niet en de SQL-taken uitvoeren wel. In dit voorbeeld start elke Execute SQL-taak een eigen transactie en wordt deze niet teruggedraaid als de transactie voor de takenreeks is afgebroken.

De transactionOption-eigenschappen van de container Sequence, foreach Loop-container en de SQL-taken uitvoeren worden als volgt ingesteld:

  • De eigenschap TransactionOption van de container Sequence is ingesteld op Vereist.

  • De TransactionOption-eigenschappen van de Foreach Loop-containers zijn ingesteld op NotSupported.

  • De transactionOption-eigenschappen van de SQL-taken uitvoeren zijn ingesteld op Vereist.

In het volgende diagram ziet u de vijf niet-gerelateerde transacties in het pakket. Eén transactie wordt gestart door de reekscontainer en vier transacties worden gestart door de SQL-taken uitvoeren.

Implementatie van meerdere transacties

Overgenomen transacties

Een pakket kan een ander pakket uitvoeren met behulp van de taak Pakket uitvoeren. Het onderliggende pakket, dat door de taak Pakket uitvoeren wordt uitgevoerd, kan een eigen pakkettransactie maken of de bovenliggende pakkettransactie overnemen.

Een onderliggend pakket neemt de bovenliggende pakkettransactie over als beide waar zijn:

  • Het pakket wordt aangeroepen door een taak Pakket uitvoeren.

  • De taak Pakket uitvoeren die het pakket heeft aangeroepen, is ook gekoppeld aan de bovenliggende pakkettransactie.

Containers en taken in het onderliggende pakket kunnen alleen lid worden van de bovenliggende pakkettransactie als het onderliggende pakket zelf deelneemt aan de transactie.

Voorbeeld van overgenomen transacties

In het volgende diagram zijn er drie pakketten die allemaal transacties gebruiken. Elk pakket bevat meerdere taken. Als u het gedrag van de transacties wilt benadrukken, worden alleen de taken pakket uitvoeren weergegeven. Pakket A voert pakketten B en C uit. Op zijn beurt voert pakket B pakketten D en E uit, en pakket C voert pakket F uit.

Pakketten en taken hebben de volgende transactiekenmerken:

  • TransactionOption is ingesteld op Vereist voor pakketten A en C

  • TransactionOption is ingesteld op Ondersteund op pakketten B en D, en op de taken Pakket B uitvoeren, Pakket D uitvoeren en Pakket F uitvoeren.

  • TransactionOption is ingesteld op NotSupported op pakket E en op de taken Execute Package C en Execute Package E.

Stroom van overgenomen transacties Stroom

Alleen pakketten B, D en F kunnen transacties overnemen van hun bovenliggende pakketten.

Pakketten B en D nemen de transactie over die is gestart door pakket A.

Pakket F neemt de transactie over die is gestart door pakket C.

Pakketten A en C beheren hun eigen transacties.

Pakket E maakt geen gebruik van transacties.

Externe resources