1204: The instance of the SQL Server Database Engine cannot obtain a LOCK resource
SQL ServerNe demek?
SQL Server, lock yöneticisinin ihtiyaç duyduğu bellek kaynağını ayıramadı ve daha fazla lock oluşturamadı. Lock bellek havuzu tükendiği için işlem başarısız olur.
Neden olur?
Aynı anda çok sayıda ince taneli (satır/sayfa) lock tutulması: büyük, index'siz veya toplu DML işlemleri; lock escalation'ın engellenmiş olması; sunucuda genel bellek baskısı; ya da uzun süre açık kalan transaction'lar. Nadiren dışsal bellek baskısı da tetikler.
Nasıl çözülür?
Büyük transaction'ları küçük partilere bölerek eşzamanlı lock sayısını azaltın. Uygun index'lerle taranan/kilitlenen satır sayısını düşürün. Lock escalation'ı kapatan yapılandırmaları gözden geçirin: trace flag 1211/1224 ve ALTER TABLE ... SET (LOCK_ESCALATION = DISABLE); kontrol için SELECT name, lock_escalation_desc FROM sys.tables; ve DBCC TRACESTATUS(-1); Sunucu belleğini ve max server memory ayarını kontrol edin; bellek baskısını giderin.
Aynı motorda diğer kayıtlar
- 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