Freigeben über


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 updates Table1.Row1, während Transaction2 updates Table2.Row2
  • Transaction1 versucht, Table2.Row2 zu aktualisieren, ist jedoch blockiert, da Transaction2 noch kein Commit ausgeführt hat und seine Sperren nicht freigegeben hat.
  • Transaction2 versucht jetzt, Table1.Row1 zu aktualisieren, ist aber blockiert, da Transaction1 nicht zugesichert wurde und seine Sperren nicht freigegeben hat.
  • Ein Deadlock tritt auf, da Transaction1 auf den Abschluss Transaction2 wartet, aber Transaction2 auf den Abschluss Transaction1 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.