Integrieren von Transaktionen in Pakete
Pakete verwenden Transaktionen, um die von Tasks ausgeführten Datenbankaktionen in atomare Einheiten einzubinden und somit die Integrität der Daten zu erhalten. Nachdem für alle Datenbankaktionen, die Teil einer Transaktion sind, Commits bzw. Rollbacks gleichzeitig ausgeführt werden, können Sie die Konsistenz der Daten auf diese Weise sicherstellen. Ein Paket mit mehreren Datenflusstasks, die jeweils Daten in verschiedenen Datenbanktabellen aktualisieren und einfügen, kann beispielsweise eine Transaktion verwenden, um sicherzustellen, dass für alle durch die Datenflüsse vorgenommenen Änderungen gleichzeitig ein Commit bzw. Rollback ausgeführt wird. Verteilte Transaktionen erweitern dieses Konzept, indem Sie Ihnen ermöglichen, verschiedenartige Vorgänge auf verschiedenen Betriebssystemen in eine einzige Transaktion einzubinden.
Sie können Transaktionen in Paketen für folgende Zwecke verwenden:
Sammeln der Ergebnisse verschiedener Tasks in einer einzigen Transaktion, um konsistente Aktualisierungen zu gewährleisten. Informationen zu Bestellungen und Einzelposten, die in zwei verschiedenen Tabellen gespeichert sind, können beispielsweise von zwei Tasks heruntergeladen werden, die entweder beide erfolgreich ausgeführt werden oder beide fehlschlagen.
Sicherstellen konsistenter Aktualisierungen auf mehreren Datenbankservern. Beispielsweise kann eine Kundenadresse im Kontext einer einzigen Transaktion in zwei verschiedenen OLTP-Systemen (Online Transaction Processing, Online-Transaktionsverarbeitung) geändert werden.
Sicherstellen von Aktualisierungen in asynchronen Umgebungen. Beispielsweise kann ein Paket einen Nachrichtenwarteschlange-Task verwenden, um eine Nachricht mit dem Namen einer hochzuladenden Datei zu lesen und zu löschen. Wenn der Task, der die Datei hochlädt, fehlschlägt, macht das nachfolgende Rollback die Datenbankänderungen rückgängig und fügt die Nachricht wieder in die Warteschlange ein.
Ausführen mehrerer Transaktionen unter der Steuerung eines einzigen Pakets. Beispielsweise kann ein Paket mithilfe der Tasks Paket ausführen eine Folge von Transaktionen am Ende des Tages gleichzeitig auf drei verschiedenen Servern ausführen.
Alle MicrosoftIntegration Services-Containertypen – Pakete, For-Schleifen-Container, Foreach-Schleifen-Container und Sequenzcontainer sowie die Taskhosts, die die einzelnen Tasks kapseln – können so konfiguriert werden, dass sie Transaktionen verwenden. Integration Services stellt für das Konfigurieren von Transaktionen drei Optionen bereit: NotSupported, Supported und Required.
Required bedeutet, dass der Container eine Transaktion startet, es sei denn, eine andere Transaktion ist bereits durch den übergeordneten Container gestartet worden. Wenn bereits eine Transaktion vorhanden ist, nimmt der Container an dieser Transaktion teil. Wenn beispielsweise ein Paket, für das die Unterstützung von Transaktionen nicht konfiguriert wurde, einen Sequenzcontainer enthält, der die Option Required verwendet, startet der Sequenzcontainer eine eigene Transaktion. Wenn das Paket jedoch mit der Option Required konfiguriert wurde, nimmt der Sequenzcontainer an der Pakettransaktion teil.
Supported bedeutet, dass der Container keine Transaktion startet, sondern an der durch den übergeordneten Container gestarteten Transaktion teilnimmt. Wenn beispielsweise ein Paket mit vier SQL ausführen-Tasks eine Transaktion startet und alle vier Tasks die Option Supported verwenden, wird für die entsprechenden Datenbankaktualisierungen ein Rollback ausgeführt, wenn einer der Tasks einen Fehler auslöst. Wenn das Paket keine Transaktion startet, sind die vier SQL ausführen-Tasks nicht durch eine Transaktion gebunden, und das Rollback wird lediglich für den fehlgeschlagenen Task ausgeführt.
NotSupported bedeutet, dass der Container keine Transaktion startet, und auch an keiner vorhandenen Transaktion teilnimmt. Eine von einem übergeordneten Container gestartete Transaktion hat keine Auswirkung auf untergeordnete Container, deren Konfiguration keine Transaktionen zulässt. Wenn ein Paket beispielsweise so konfiguriert ist, dass es eine Transaktion startet, und ein For-Schleifen-Container des Pakets die Option NotSupported verwendet, kann für keinen der Tasks in der For-Schleife ein Rollback ausgeführt werden, falls ein Fehler auftritt.
Sie konfigurieren Transaktionen, indem Sie für den Container die TransactionOption-Eigenschaft festlegen. Diese Eigenschaft können Sie mithilfe des Fensters Eigenschaften in Business Intelligence Development Studio oder programmgesteuert festlegen. Weitere Informationen finden Sie unter Entwicklerhandbuch (Integration Services).
Hinweis |
---|
Mit der TransactionOption-Eigenschaft wird festgelegt, ob der von einem Container angeforderte Wert der IsolationLevel-Eigenschaft angewendet wird. Weitere Informationen finden Sie in der Beschreibung der IsolationLevel-Eigenschaft im Thema Festlegen von Paketeigenschaften. |
So konfigurieren Sie das Verwenden von Transaktionen für ein Paket
Externe Ressourcen
- Blog-Artikel How to Use Transactions in SQL Server Integration Services (SSIS) (Verwenden von Transaktionen in SQL Server Integration Services (SSIS)) unter www.mssqltips.com
|
Siehe auch