DBAtlas · Atlas d'exploitation des bases de données

1204: The instance of the SQL Server Database Engine cannot obtain a LOCK resource (l'instance du moteur SQL Server ne peut pas obtenir de ressource LOCK)

SQL Server

Que signifie cette erreur ?

SQL Server n'a pas pu allouer la mémoire dont le gestionnaire de verrous a besoin et ne peut plus créer de verrous. L'opération échoue car le pool de mémoire des verrous est épuisé.

Cause

Trop de verrous fins (ligne/page) détenus simultanément : DML volumineux, sans index ou en masse ; escalade de verrous empêchée ; pression mémoire générale sur le serveur ; ou transactions ouvertes de longue durée. Il arrive qu'une pression mémoire externe soit le déclencheur.

Comment la corriger

Découpez les grosses opérations en lots plus petits pour réduire le nombre de verrous simultanés. Utilisez des index appropriés pour réduire le nombre de lignes parcourues/verrouillées. Revoyez les configurations qui désactivent l'escalade de verrous : trace flags 1211/1224 et ALTER TABLE ... SET (LOCK_ESCALATION = DISABLE); vérifiez avec SELECT name, lock_escalation_desc FROM sys.tables; et DBCC TRACESTATUS(-1); Vérifiez la mémoire du serveur et le paramètre max server memory, et soulagez la pression mémoire.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur