Delen via


MSSQLSERVER_1205

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Bijzonderheden

Attribuut Waarde
Productnaam SQL Server
Gebeurtenis-id 1205
Gebeurtenisbron MSSQLSERVER
Bestanddeel SQLEngine
Symbolische naam LK_VICTIM
Berichttekst Transactie (proces-id %d) is vastgelopen op %.*ls-resources met een ander proces en is gekozen als het impasseslachtoffer. Voer de transactie opnieuw uit.

Uitleg

Resources worden geopend in conflicterende volgorde voor afzonderlijke transacties, wat een impasse veroorzaakt. Bijvoorbeeld:

  • Transaction1 updates Table1.Row1, terwijl Transaction2 Table2.Row2
  • Transaction1 probeert Table2.Row2 bij te werken, maar wordt geblokkeerd omdat Transaction2 nog niet heeft vastgelegd en de vergrendelingen niet heeft vrijgegeven
  • Transaction2 probeert nu Table1.Row1 bij te werken, maar wordt geblokkeerd omdat Transaction1 niet heeft doorgevoerd en de vergrendelingen niet heeft vrijgegeven
  • Er treedt een impasse op omdat Transaction1 wacht tot Transaction2 is voltooid, maar Transaction2 wacht tot Transaction1 is voltooid.

Het systeem detecteert deze impasse en kiest een van de betrokken transacties als slachtoffer. Vervolgens wordt dit foutbericht weergegeven, waarna de transactie van het slachtoffer wordt teruggedraaid. Zie Impassesvoor gedetailleerde informatie.

Gebruikersactie

Impasses zijn in de meeste gevallen problemen met betrekking tot toepassingen en vereisen dat toepassingsontwikkelaars codewijzigingen aanbrengen. Een benadering wanneer u fout 1205 ontvangt, is het opnieuw uitvoeren van de query's. Zie Deadlock Simulator-app voor ontwikkelaars voor meer informatie: Een probleem met een SQL-impasse afhandelen in uw app-.

U kunt de toepassing ook herzien om impasses te voorkomen. De transactie die als slachtoffer is gekozen, kan opnieuw worden geprobeerd en slaagt waarschijnlijk, afhankelijk van welke bewerkingen tegelijkertijd worden uitgevoerd.

Als u impasses wilt voorkomen of voorkomen, kunt u overwegen om alle transacties in dezelfde volgorde te openen (Table1en vervolgens Table2). Op deze manier, hoewel blokkeren kan optreden, wordt een impasse vermeden.

Zie Afhandeling van impasses en Het minimaliseren van impassesvoor meer informatie.