Die Ausführung eines SSIS-Pakets reagiert nicht mehr, wenn Sie DTC-Transaktionen für ein Paket in Microsoft SQL Server
Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem die Ausführung eines SSIS-Pakets (Microsoft SQL Server Integration Services) nicht mehr reagiert, wenn Sie DTC-Transaktionen für das Paket aktivieren und die ValidateExternalMetadata
-Eigenschaft für eine Komponente in einem Datenflusstask aktivieren.
Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 2253391
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
- Sie erstellen ein SSIS-Paket in SQL Server.
- Das SSIS-Paket enthält einen Datenflusstask und einige andere Aufgaben.
- Die
TransactionOption
-Eigenschaft des SSIS-Pakets ist auf Erforderlich festgelegt, um DTC-Transaktionen zu verwenden. - Die anderen Tasks werden vor der Ausführung des Datenflusstasks in einer DTC-Transaktion ausgeführt.
- Sie fügen dem Datenflusstask eine Komponente hinzu.
- Die
ValidateExternalMetadata
-Eigenschaft einer Datenflusskomponente ist auf True festgelegt. - Der Datenflusstask enthält eine OLE DB-Zielkomponente, für die der Datenzugriffsmodus auf Tabelle oder Sicht oder auf Tabellenname oder Ansichtsname-Variable festgelegt ist.
Wenn Sie das Paket in diesem Szenario ausführen, reagiert die Ausführung nicht mehr. Wenn Sie das SSIS-Paket in Visual Studio debuggen, erhalten Sie außerdem Meldungen, die in der Statusansicht wie folgt aussehen:
SSIS-Paket "Package.dtsx" wird gestartet.
Informationen: 0x4004300A unter Datenfluss Task, DTS. Pipeline: Die Überprüfungsphase beginnt. Informationen: 0x4001100A unter Paket: Verteilte Transaktion für diesen Container wird gestartet. Informationen: 0x4004300A unter Datenfluss Task, DTS. Pipeline: Die Überprüfungsphase beginnt.
Ursache
Dieses Problem tritt auf, weil die Verbindung im Datenfluss nicht in der DTC-Transaktion registriert ist. Dadurch wird die Ausführung der sp_cursoropen
gespeicherten Prozedur blockiert. Dies ist ein Entwurfsfeature, da eine Verbindung während des Überprüfungsprozesses nicht in einer DTC-Transaktion registriert werden kann. In dem szenario, das im Abschnitt Symptome beschrieben wird, wird der Validierungsprozess einer Datenflusskomponente blockiert, wenn Sie das Paket ausführen, da die Verbindung im Datenflusstask nicht für die DTC-Transaktion registriert wurde.
Lösung
Wenden Sie eine der folgenden Methoden an, um dieses Problem zu beheben:
Legen Sie für alle Komponenten im Datenflusstask auf False fest
ValidateExternalMetadata
.Legen Sie den Datenzugriffsmodus der OLE DB-Zielkomponente auf einen der folgenden Modi fest:
- Tabelle oder Ansicht – schnelles Laden
- Tabellenname oder Ansichtsnamevariable – schnelles Laden
- SQL-Befehl
Weitere Informationen
Der Tabellen- oder Sichtdatenzugriffsmodus ist blockiert, aber andere Datenzugriffsmodi werden nicht blockiert, da die verschiedenen Befehle des Datenanbieters für jeden Datenzugriffsmodus ausgegeben werden. Um weitere Details zu diesem Problem zu erhalten, verwenden Sie SQL Server Profiler, um die verschiedenen Befehle anzuzeigen, die vom Datenanbieter ausgegeben werden.
Weitere Informationen zur Verwendung von SQL Server Profiler finden Sie unter SQL Server Profiler Vorlagen und Berechtigungen.
Weitere Informationen zur Problembehandlung von SSIS-Paketen finden Sie unter Problembehandlung bei der Paketentwicklung.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für