MSSQLSERVER_3988
Gilt für: SQL Server
Details
attribute | Wert |
---|---|
Produktname | SQL Server |
Ereignis-ID | 3988 |
Ereignisquelle | MSSQLSERVER |
Komponente | SQLEngine |
Symbolischer Name | XACT_UNSUPPORT_PARALLEL_TRAN2 |
Meldungstext | Eine neue Transaktion ist unzulässig, weil in dieser Sitzung andere Threads ausgeführt werden. |
Erklärung
Dieser Fehler tritt auf, wenn Sie eine verteilte Abfrage ausführen, die mehrere Tabellen verknüpft, die von Remoteinstanzen von SQL Server gehostet werden, während die Sitzungseinstellung XACT_ABORT
aktiviert ist. Dem Benutzer wird eine Fehlermeldung angezeigt, die der folgenden ähnelt:
Meldung 3988, Ebene 16, Status 1, Zeile #
Eine neue Transaktion ist unzulässig, weil in dieser Sitzung andere Threads ausgeführt werden.
Ursache
Es gibt einige Entwurfsbeschränkungen in der Art und Weise, wie SQL Server verteilte Abfragen (DQs) verarbeitet, wenn die folgenden Bedingungen erfüllt sind:
- SQL Server verknüpft mehrere Tabellen einer SQL Server-Remotedatenquelle.
- Die Sitzung, in der die Abfrage ausgeführt wird, ist nicht in einer verteilten Transaktion eingetragen.
In dieser Situation wird beim Versuch, die Abfrage auszuführen, möglicherweise einer der beiden Fehler ausgelöst, die im Abschnitt Erklärung erwähnt werden.
Aktion des Benutzers
Um dieses Problem zu umgehen, schließen Sie die verteilte Abfrage in einer „BEGIN DISTRIBUTED TRANSACTION“-Anweisung ein:
BEGIN DISTRIBUTED TRANSACTION
/*The actual Distributed Query goes next, outside of comments*/
COMMIT TRANSACTION