1204: The instance of the SQL Server Database Engine cannot obtain a LOCK resource
SQL ServerWas 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.
Weitere Einträge zu dieser Datenbank
- 40613Database is not currently available (Azure SQL)
- 102Incorrect syntax near 'token'
- 8114Error converting data type X to Y
- 3906Failed to update database because the database is read-only
- 15023User already exists in the current database
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication
- 605Attempt to fetch logical page belongs to a different allocation unit