MSSQLSERVER_1205
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance
Details
attribute | Wert |
---|---|
Produktname | SQL Server |
Ereignis-ID | 1205 |
Ereignisquelle | MSSQLSERVER |
Komponente | SQLEngine |
Symbolischer Name | LK_VICTIM |
Meldungstext | Die Transaktion (Prozess-ID %d) befand sich auf %.*ls Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus. |
Erklärung
Auf Ressourcen wird für separate Transaktionen in einer Reihenfolge zugegriffen, die zu einem Konflikt führt und einen Deadlock verursacht. Zum Beispiel:
-
Transaction1
updatesTable1.Row1
, während Transaction2 updatesTable2.Row2
-
Transaction1
versucht,Table2.Row2
zu aktualisieren, ist jedoch blockiert, daTransaction2
noch kein Commit ausgeführt hat und seine Sperren nicht freigegeben hat. - Transaction2 versucht jetzt,
Table1.Row1
zu aktualisieren, ist aber blockiert, daTransaction1
nicht zugesichert wurde und seine Sperren nicht freigegeben hat. - Ein Deadlock tritt auf, da
Transaction1
auf den AbschlussTransaction2
wartet, aberTransaction2
auf den AbschlussTransaction1
wartet.
Das System erkennt diesen Deadlock und wählt eine der Transaktionen aus, die als Opferbeteiligt sind. Anschließend wird diese Fehlermeldung ausgegeben, um die Transaktion des Opfers zurückzugeben. Ausführliche Informationen finden Sie unter Deadlocks.
Benutzeraktion
Deadlocks sind in den meisten Fällen anwendungsbezogene Probleme und erfordern Anwendungsentwickler, Codeänderungen vorzunehmen. Ein Ansatz, wenn Sie Fehler 1205 erhalten, besteht darin, die Abfragen erneut auszuführen. Weitere Informationen finden Sie unter Deadlock Simulator-App für Entwickler: Behandeln eines SQL Deadlock-Problems in Ihrer App.
Sie können auch die Anwendung überarbeiten, um Deadlocks zu vermeiden. Die Transaktion, die als Opfer ausgewählt wurde, kann wiederholt werden und ist wahrscheinlich erfolgreich, je nachdem, welche Vorgänge gleichzeitig ausgeführt werden.
Um zu verhindern oder zu verhindern, dass Deadlocks auftreten, erwägen Sie, alle Transaktionszugriffszeilen in derselben Reihenfolge (Table1
, dann Table2
). Auf diese Weise wird, obwohl das Blockieren auftreten kann, ein Deadlock vermieden.
Weitere Informationen finden Sie unter Behandeln von Deadlocks und Minimieren von Deadlocks.