Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:SQL Server
SSIS Integration Runtime i Azure Data Factory
Paket använder transaktioner för att binda de databasåtgärder som uppgifter utför till atomiska enheter och genom att göra detta upprätthålla dataintegriteten. Alla Containertyper-paket för Microsoft Integration Services, Containrar för For Loop, Foreach Loop och Sekvens samt uppgiftsvärdarna som kapslar in varje aktivitet kan konfigureras för att använda transaktioner. Integration Services innehåller tre alternativ för att konfigurera transaktioner: NotSupported, Supported och Required.
Obligatoriskt anger att containern startar en transaktion, såvida inte en redan har startats av den överordnade containern. Om det redan finns en transaktion ansluter containern till transaktionen. Om till exempel ett paket som inte har konfigurerats för att stödja transaktioner innehåller en sekvenscontainer som använder alternativet Obligatoriskt startar sekvenscontainern sin egen transaktion. Om paketet har konfigurerats för att använda alternativet Obligatoriskt skulle sekvenscontainern ansluta till pakettransaktionen.
Stöds anger att containern inte startar en transaktion, men ansluter alla transaktioner som startas av den överordnade containern. Om till exempel ett paket med fyra Execute SQL-uppgifter startar en transaktion och alla fyra aktiviteterna använder alternativet Stöds , återställs databasuppdateringarna som utförs av Sql-aktiviteterna För körning om någon aktivitet misslyckas. Om paketet inte startar en transaktion är de fyra Sql-aktiviteterna för körning inte bundna av en transaktion och inga databasuppdateringar förutom de som utförs av den misslyckade aktiviteten återställs.
NotSupported anger att containern inte startar en transaktion eller ansluter till en befintlig transaktion. En transaktion som startas av en överordnad container påverkar inte underordnade containrar som har konfigurerats för att inte stödja transaktioner. Om ett paket till exempel har konfigurerats för att starta en transaktion och en For Loop-container i paketet använder alternativet NotSupported kan ingen av uppgifterna i For Loop återställas om de misslyckas.
Du konfigurerar transaktioner genom att ange egenskapen TransactionOption i containern. Du kan ange den här egenskapen med hjälp av fönstret Egenskaper i SQL Server Data Tools (SSDT) eller så kan du ange egenskapen programmatiskt.
Anmärkning
Egenskapen TransactionOption påverkar om värdet för egenskapen IsolationLevel som begärs av en container tillämpas eller inte. Mer information finns i beskrivningen av egenskapen IsolationLevel i avsnittet Ange paketegenskaper.
Konfigurera ett paket för att använda transaktioner
När du konfigurerar ett paket för att använda transaktioner har du två alternativ:
Ha en enda transaktion för paketet. I det här fallet är det själva paketet som initierar den här transaktionen, medan enskilda uppgifter och containrar i paketet deltar i den här enskilda transaktionen.
Ha flera transaktioner i paketet. I det här fallet stöder paketet transaktioner, men enskilda uppgifter och containrar i paketet initierar faktiskt transaktionerna.
Följande procedurer beskriver hur du konfigurerar båda alternativen.
Konfigurera ett paket för att använda en enskild transaktion
I det här alternativet initierar själva paketet en enda transaktion. Du konfigurerar paketet för att initiera den här transaktionen genom att ange egenskapen TransactionOption för paketet till Obligatorisk.
Därefter registrerar du specifika uppgifter och containrar i den här enskilda transaktionen. Om du vill registrera en uppgift eller container i en transaktion anger du egenskapen TransactionOption för den uppgiften eller containern till Stöds.
I SQL Server Data Tools (SSDT) öppnar du projektet Integration Services som innehåller det paket som du vill konfigurera för att använda en transaktion.
Dubbelklicka på paketet i Solution Explorer för att öppna det.
Klicka på fliken Kontrollflöde .
Högerklicka var som helst i bakgrunden på designytan för kontrollflödet och klicka sedan på Egenskaper.
I fönstret Egenskaper anger du egenskapen TransactionOption till Obligatorisk.
På designytan på fliken ControlFlow högerklickar du på uppgiften eller containern som du vill registrera i transaktionen och klickar sedan på Egenskaper.
I fönstret Egenskaper anger du egenskapen TransactionOption till Stöds.
Anmärkning
Om du vill registrera en anslutning i en transaktion registrerar du de uppgifter som använder anslutningen i transaktionen. Mer information finns i Anslutningar för Integration Services (SSIS).
Upprepa steg 6 och 7 för varje uppgift och container som du vill registrera i transaktionen.
Konfigurera ett paket för att använda flera transaktioner
I det här alternativet stöder själva paketet transaktioner men startar inte en transaktion. Du konfigurerar paketet för att stödja transaktioner genom att ange egenskapen TransactionOption för paketet till Stöds.
Därefter konfigurerar du önskade uppgifter och containrar i paketet för att initiera eller delta i transaktioner. Om du vill konfigurera en uppgift eller container för att initiera en transaktion anger du egenskapen TransactionOption för den uppgiften eller containern till Obligatorisk.
I SQL Server Data Tools (SSDT) öppnar du projektet Integration Services som innehåller det paket som du vill konfigurera för att använda transaction.s
Dubbelklicka på paketet i Solution Explorer för att öppna det.
Klicka på fliken Kontrollflöde .
Högerklicka var som helst i bakgrunden på designytan för kontrollflödet och klicka sedan på Egenskaper.
I fönstret Egenskaper anger du egenskapen TransactionOption till Stöds.
Anmärkning
Paketet stöder transaktioner, men transaktionerna startas av en uppgift eller containrar i paketet.
På designytan på fliken ControlFlow högerklickar du på uppgiften eller containern i paketet som du vill starta en transaktion för och klickar sedan på Egenskaper.
I fönstret Egenskaper anger du egenskapen TransactionOption till Obligatorisk.
Om en transaktion startas av en container högerklickar du på uppgiften eller containern som du vill registrera i transaktionen och klickar sedan på Egenskaper.
I fönstret Egenskaper anger du egenskapen TransactionOption till Stöds.
Anmärkning
Om du vill registrera en anslutning i en transaktion registrerar du de uppgifter som använder anslutningen i transaktionen. Mer information finns i Anslutningar för Integration Services (SSIS).
Upprepa steg 6 till 9 för varje uppgift och container som startar en transaktion.
Flera transaktioner i ett paket
Det är möjligt för ett paket att inkludera orelaterade transaktioner i ett Integration Services-paket. Varje gång en container mitt i en kapslad containerhierarki inte stöder transaktioner, startar containrarna ovanför eller under den i hierarkin separata transaktioner om de är konfigurerade för att stödja transaktioner. Transaktionerna checkar in eller återställs i ordning från den innersta uppgiften i den kapslade containerhierarkin till paketet. Men när den inre transaktionen har checkats in återställs den inte om en yttre transaktion avbryts.
Exempel på flera transaktioner i ett paket
Ett paket har till exempel en sekvenscontainer som innehåller två Foreach Loop-containrar och varje container innehåller två Execute SQL-uppgifter. Sekvenscontainern stöder transaktioner, foreach-loopcontainrar gör det inte och utför SQL-uppgifter. I det här exemplet startar varje Execute SQL-uppgift sin egen transaktion och återställs inte om transaktionen för sekvensaktiviteten avbröts.
Egenskaperna TransactionOption för sekvenscontainern, Foreach Loop-containern och Sql-aktiviteterna För körning anges på följande sätt:
Egenskapen TransactionOption för sekvenscontainern är inställd på Obligatorisk.
Egenskaperna TransactionOption för Foreach Loop-containrarna är inställda på NotSupported.
Egenskaperna TransactionOption för Execute SQL-uppgifter är inställda på Obligatoriskt.
Följande diagram visar de fem orelaterade transaktionerna i paketet. En transaktion startas av sekvenscontainern och fyra transaktioner startas av SQL-aktiviteterna Kör.
Ärvda transaktioner
Ett paket kan köra ett annat paket med hjälp av aktiviteten Kör paket. Det underordnade paketet, som är det paket som körs av aktiviteten Kör paket, kan skapa en egen pakettransaktion eller ärva den överordnade pakettransaktionen.
Ett underordnat paket ärver den överordnade pakettransaktionen om båda följande är sanna:
Paketet anropas av en körningspaketaktivitet.
Uppgiften Kör paket som anropade paketet anslöt också till den överordnade pakettransaktionen.
Containrar och uppgifter i det underordnade paketet kan inte ansluta till den överordnade pakettransaktionen om inte själva det underordnade paketet ansluter transaktionen.
Exempel på ärvda transaktioner
I följande diagram finns det tre paket som alla använder transaktioner. Varje paket innehåller flera uppgifter. För att betona transaktionernas beteende visas endast aktiviteterna Kör paket. Paket A kör paket B och C. Paket B kör i sin tur paket D och E och paket C kör paket F.
Paket och uppgifter har följande transaktionsattribut:
TransactionOption är inställt på Obligatoriskt för paket A och C
TransactionOption är inställt på Stöds på paket B och D och för uppgifterna Kör paket B, Kör paket D och Kör paket F.
TransactionOption är inställt på NotSupported på paket E och på aktiviteterna Kör paket C och Kör paket E.
Endast paket B, D och F kan ärva transaktioner från sina överordnade paket.
Paket B och D ärver transaktionen som startades av paket A.
Package F ärver den transaktion som startades av paket C.
Paket A och C styr sina egna transaktioner.
Paket E använder inte transaktioner.