MSSQLSERVER_1204

S’applique à : ouiSQL Server (toutes les versions prises en charge)

Détails

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 1204
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique LK_OUTOF
Texte du message L'instance du moteur de base de données SQL Server ne peut pas obtenir une ressource LOCK en ce moment. Réexécutez votre instruction lorsque le nombre d'utilisateurs actifs est moindre. Demandez à l'administrateur de base de données de vérifier la configuration du verrou et de la mémoire pour cette instance, ou de vérifier les longues transactions.

Explication

SQL Server ne peut pas obtenir de ressource de verrouillage. Cela peut être dû à l'une des raisons suivantes :

  • SQL Server ne peut pas allouer plus de mémoire à partir du système d’exploitation, soit parce que d’autres processus l’utilisent, soit parce que le serveur fonctionne avec l’option Mémoire maximum du serveur configurée.

  • Le gestionnaire de verrous n'utilisera pas plus de 60 % de la mémoire disponible pour SQL Server.

Action de l'utilisateur

Si vous pensez que SQL Server ne peut pas allouer suffisamment de mémoire, essayez de procéder comme suit :

  • Si des applications autres que SQL Server consomment des ressources, essayez d'arrêter ces applications ou envisagez de les exécuter sur un serveur distinct. Cela libérera de la mémoire à partir d'autres processus pour SQL Server.

  • Si vous avez configuré l'option max server memory, augmentez la valeur de ce paramètre.

Si vous pensez que le gestionnaire de verrous a utilisé la quantité maximale de mémoire disponible, identifiez la transaction qui maintient le plus de verrous et mettez-y fin. Le script ci-dessous identifiera la transaction avec le plus de verrous :

SELECT request_session_id, COUNT (*) num_locks  
FROM sys.dm_tran_locks  
GROUP BY request_session_id   
ORDER BY count (*) DESC  

Considérez l'ID de session le plus élevé et mettez-y fin à l'aide de la commande KILL.