2017-10-18 23 views
0

J'ai une procédure stockée très complexe dans mon SQL Server 2008 R2 qui insère de grandes quantités de données dans plusieurs tables d'une base de données.La procédure stockée SQL Server continue d'attendre avec "attente de commande"

Une copie de cette procédure fonctionne correctement sur plusieurs autres serveurs. J'utilise généralement un travail dans l'agent serveur pour exécuter la procédure, mais lorsque je fais cela sur mon serveur de développement, le travail échoue, affichant un extrait du code dans le journal, mais rien d'autre. Lorsque j'exécute la procédure stockée en dehors de la tâche, le moniteur d'activité affiche le processus comme état de tâche: "Suspendu", commande: "En attente de commande" et type d'attente alternant "IO_Completion", "PAGEIOLatch_SH" et vide.

This page suggère qu'il pourrait y avoir quelque chose avec l'allocation de mémoire, mais il reste encore 9gb sur le disque écrit les données et les journaux (pas beaucoup, mais cela devrait suffire).

Est-ce que quelqu'un sait ce que le type d'attente IO_Completion signifie dans le contexte de l'exécution d'une procédure stockée?

+0

Vous avez posé une question sur un problème X, Y. Si vous avez posté le proc et l'erreur, vous aurez une meilleure chance d'obtenir une réponse à votre problème * réel *. – scsimon

+1

[PAGEIOLATCH_SH] (https://www.sqlskills.com/help/waits/pageiolatch_sh/) est généralement le système qui attend la lecture des pages de données à partir du disque ou de la mémoire. [IO_COMPLETION] (https://www.sqlskills.com/help/waits/io_completion/) est généralement le système qui attend la lecture de pages non-données à partir du disque ou de la mémoire. Ce n'est pas nécessairement une indication que le problème est IO, cependant, puisque * la plupart * des opérations SQL Server sont liées à l'E/S. Si vous voulez vraiment creuser dedans, vous pouvez commencer [ici] (https://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/) mais peut être un hareng rouge. –

+1

Sans connaître la configuration de votre système de développement, il est vraiment difficile de dire quel est le problème. Il semble que vous ayez à la fois les journaux et les fichiers de données sur le même disque, ce qui ne va pas aider les grandes insertions si vous n'avez pas pré-développé vos fichiers. Cela pourrait être un problème avec l'épuisement de la mémoire si votre système de dev n'a pas beaucoup de mémoire. Il pourrait s'agir d'un conflit de tempdb, car c'est ce que SQL Server utilise lorsqu'il a besoin d'un espace de travail. –

Répondre

0

Lorsque j'avais annulé la procédure stockée en cours d'exécution, une erreur qui a été facilement résolue a été imprimée. Il semble qu'un manque de mémoire ait empêché le serveur de renvoyer l'erreur correctement, ce qui l'a bloqué dans l'état d'attente 'attente de commande'.