MSSQLSERVER_1204
Détails
Nom du produit |
SQL Server |
Version du produit |
10.0 |
Numéro de build du produit |
10.00.0000.00 |
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 max server memory 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.