117 votes

Comment tuer/arrêter immédiatement une longue requête SQL ?

J'utilise SQL Server 2008 et son Management Studio. J'ai exécuté une requête qui produit de nombreuses lignes. J'ai essayé de l'annuler via le bouton rouge d'annulation, mais elle ne s'est pas arrêtée au cours des 10 dernières minutes. D'habitude, elle s'arrête au bout de 3 minutes.

Quelle peut en être la raison et comment l'arrêter immédiatement ?

15voto

Jai Nath Gupta Points 151
  1. Tout d'abord, vous devez afficher/contrôler toutes les requêtes en cours en utilisant la requête suivante-

    SELECT text, GETDATE(), *
    FROM sys.dm_exec_requests
    CROSS APPLY sys.dm_exec_sql_text(sql_handle)
  2. Trouvez Session-Id y Description pour toutes les requêtes en cours d'exécution, puis copier l'ID de session de la requête spécifique que vous voulez tuer/arrêter immédiatement.

  3. Tuer/arrêter une requête spécifique utilisant le Session-Id en utilisant cette requête :

    Kill Session-id

    Exemple :

    kill 125 --125 is my Session-Id

14voto

Yash Saraiya Points 638

Vous pouvez utiliser un raccourci clavier ALT + Break pour arrêter l'exécution de la requête. Toutefois, cette opération peut ne pas aboutir dans tous les cas.

5voto

Maulik Modi Points 408

Je souffre de la même chose depuis longtemps. Cela se produit surtout lorsque vous êtes connecté à un serveur distant (qui peut être lent), ou lorsque vous avez une mauvaise connexion réseau. Je doute que Microsoft sache quelle est la bonne réponse.

Mais depuis que j'ai essayé de trouver la solution. Seule une approche de profane a fonctionné

  • Cliquez sur le bouton de fermeture au-dessus de l'onglet de la requête dont vous êtes victime. Au bout d'un moment (si Microsoft n'est pas trop dur avec vous ! !!), vous obtiendrez une fenêtre vous demandant ceci

"La requête est en cours d'exécution. Voulez-vous annuler la requête ?"

  • Cliquez sur "Oui".

  • Après un moment, il vous demandera si vous voulez sauvegarder cette requête ou non ?

  • Cliquez sur "Annuler".

Et après cela, peut-être que votre studio est à nouveau stable pour exécuter votre requête.

Ce qu'il fait en arrière-plan est de déconnecter votre fenêtre de requête avec la connexion. Ainsi, pour exécuter à nouveau la requête, il faudra du temps pour se connecter à nouveau au serveur distant. Mais croyez-moi, ce compromis est bien meilleur que la souffrance de voir ce timer qui tourne pour l'éternité.

PS : Ça marche pour moi, Kudos si ça marche pour toi aussi. ! !!

2voto

Joseph McKinley Points 21

Apparemment sur sql server 2008 r2 64bit, avec une longue requête en cours depuis IIS, le kill spid ne semble pas fonctionner, la requête est juste redémarrée encore et encore. et il semble qu'elle réutilise les spid's. la requête fait que sql server prend 35% de cpu constamment et bloque le site web. Je suppose qu'il ne peut pas répondre aux autres requêtes pour se connecter.

2voto

Aubrey Love Points 552

Une solution simple, si la case rouge "stop" ne fonctionne pas, est d'essayer d'appuyer sur les touches "Ctrl + Pause" du clavier.

Si vous exécutez SQL Server sous Linux, il y a une application que vous pouvez ajouter à votre systray appelée "killall". Il suffit de cliquer sur le bouton "killall", puis de cliquer sur le programme qui est pris dans une boucle et il se terminera le programme. J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X