DBAtlas · Atlas für Datenbankbetrieb

1204: The instance of the SQL Server Database Engine cannot obtain a LOCK resource

SQL Server

Was bedeutet das?

SQL Server konnte den vom Lock Manager benötigten Speicher nicht allokieren und kann keine weiteren Sperren anlegen. Die Operation schlägt fehl, weil der Speicherpool für Sperren erschöpft ist.

Ursache

Zu viele feingranulare Sperren (Zeile/Seite) gleichzeitig: großes, nicht indiziertes oder Bulk-DML; verhinderte Lock Escalation; allgemeiner Speicherdruck auf dem Server; oder lang laufende offene Transaktionen. Gelegentlich ist externer Speicherdruck der Auslöser.

Lösung

Teile große Operationen in kleinere Batches auf, um die Zahl gleichzeitiger Sperren zu senken. Nutze passende Indizes, um die Zahl gelesener/gesperrter Zeilen zu verringern. Prüfe Konfigurationen, die Lock Escalation deaktivieren: Trace Flags 1211/1224 und ALTER TABLE ... SET (LOCK_ESCALATION = DISABLE); prüfe mit SELECT name, lock_escalation_desc FROM sys.tables; und DBCC TRACESTATUS(-1); Prüfe den Serverspeicher und die Einstellung max server memory und entlaste den Speicherdruck.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank