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 ServerQue 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.
Autres entrées pour ce moteur
- 40613Database is not currently available (Azure SQL) (base actuellement indisponible)
- 102Incorrect syntax near 'token'
- 8114Error converting data type X to Y
- 3906Failed to update database because the database is read-only (échec de la mise à jour : la base est en lecture seule)
- 15023User already exists in the current database (l'utilisateur existe déjà dans la base courante)
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication (échec de connexion : login provenant d'un domaine non approuvé, inutilisable avec l'authentification Windows)
- 605Attempt to fetch logical page belongs to a different allocation unit (la page logique lue appartient à une autre unité d'allocation)