8645: A time out occurred while waiting for memory resources to execute the query (timeout en attendant les ressources mémoire nécessaires à l'exécution de la requête)
SQL ServerQue signifie cette erreur ?
Une requête a expiré en attendant sur le resource semaphore l'octroi de mémoire (memory grant) dont elle a besoin pour s'exécuter. La pression mémoire ayant empêché l'allocation d'un octroi, l'opération a été annulée.
Cause
Des requêtes concurrentes gourmandes en mémoire (gros tris, hash joins, hash aggregates) ont consommé tout le pool de mémoire des requêtes ; les nouvelles requêtes se sont mises en file d'attente sur le sémaphore et ont expiré. Des estimations d'octroi de mémoire surdimensionnées (statistiques obsolètes, mauvais plans) ou une mémoire serveur insuffisante sont la cause racine.
Comment la corriger
Identifiez les requêtes qui attendent ou détiennent de la mémoire avec sys.dm_exec_query_memory_grants et les DMV du resource semaphore. Mettez à jour les statistiques et corrigez les plans qui provoquent des octrois de mémoire gonflés (index appropriés, meilleures estimations). Réduisez la concurrence des requêtes gourmandes en mémoire ; si nécessaire, plafonnez les octrois de mémoire avec Resource Governor. Revoyez la configuration mémoire du serveur (max server memory).
Autres entrées pour ce moteur
- 4922ALTER TABLE ALTER COLUMN failed because one or more objects access this column (échec d'ALTER TABLE ALTER COLUMN : un ou plusieurs objets accèdent à cette colonne)
- 7202Could not find server 'name' in sys.servers (serveur 'name' introuvable dans sys.servers)
- 40501The service is currently busy. Retry the request after 10 seconds (le service est actuellement occupé ; réessayez dans 10 secondes)
- 8651Could not perform the operation because the requested memory grant was not available (opération impossible : l'octroi de mémoire demandé n'était pas disponible)
- 5061ALTER DATABASE failed because a lock could not be placed on database (échec d'ALTER DATABASE : impossible de poser un verrou sur la base)
- 3702Cannot drop database because it is currently in use (impossible de supprimer la base : elle est en cours d'utilisation)
- 15138The database principal owns a schema in the database, and cannot be dropped (le principal de base de données possède un schéma et ne peut pas être supprimé)