J'utilise SQL Server 2008 et son studio de gestion. 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 cela ne s'est pas arrêté au cours des 10 dernières minutes. Il s'arrête généralement dans les 3 minutes.
Quelle pourrait être la raison et comment puis-je l'arrêter immédiatement?
sql
sql-server
sql-server-2008
sequel.learner
la source
la source
Réponses:
Une annulation de requête est immédiate, à condition que votre attention puisse atteindre le serveur et être traitée. Une requête doit être dans un état annulable, ce qui est presque toujours vrai, sauf si vous effectuez certaines opérations telles que l'appel d'un service Web à partir de SQLCLR. Si votre attention ne peut pas atteindre le serveur, cela est généralement dû à une surcharge du planificateur .
Mais si votre requête fait partie d'une transaction qui doit être restaurée, la restauration ne peut pas être interrompue. Si cela prend 10 minutes, cela prend 10 minutes et vous ne pouvez rien y faire. Même le redémarrage du serveur n'aidera pas, ne fera que prolonger le démarrage car la récupération doit terminer la restauration.
Pour savoir quelle raison spécifique s'applique à votre cas, vous devrez vous enquêter vous-même.
la source
Vérifiez les valeurs sous CPUTime et DiskIO . Notez le SPID du processus ayant une grande valeur comparativement.
la source
Exécutez d'abord la commande ci-dessous:
Après cela, exécutez la commande ci-dessous avec SPID, que vous avez obtenue à partir de la commande ci-dessus:
la source
C'est un peu une réponse idiote, mais cela fonctionne de manière fiable au moins dans mon cas: dans le studio de gestion, lorsque "Annuler l'exécution de la requête" n'arrête pas la requête, je clique simplement pour fermer le document SQL actuel. il me demande si je veux annuler la requête, je dis oui, et voilà dans quelques secondes, il s'arrête de s'exécuter. Après cela, il me demande si je veux enregistrer le document avant de le fermer. À ce stade, je peux cliquer sur Annuler pour garder le document ouvert et continuer à travailler. Aucune idée de ce qui se passe dans les coulisses, mais cela semble fonctionner.
la source
Si vous annulez et voyez cette course
(Activity Monitor ne sera pas disponible sur l'ancien serveur SQL 2000 FYI)
Repérez le SPID que vous souhaitez tuer par exemple 81
Exécutez à
sp_who2 'active'
nouveau et vous remarquerez probablement qu'il dort ...Pour obtenir le STATUS, lancez à nouveau le KILL
Ensuite, vous recevrez un message comme celui-ci
la source
Vous pouvez utiliser un raccourci clavier ALT+ Breakpour arrêter l'exécution de la requête. Cependant, cela peut ne pas réussir dans tous les cas.
la source
la source
apparemment sur sql server 2008 r2 64bit, avec une longue requête d'IIS, le kill spid ne semble pas fonctionner, la requête est juste redémarrée encore et encore. et il semble réutiliser le spid. la requête fait que le serveur sql prend constamment 35% du processeur et bloque le site Web. Je suppose que bc / il ne peut pas répondre à d'autres requêtes pour se connecter
la source
Pour ma part, mon sql s'est raccroché lorsque j'ai essayé de le fermer en courant sans fin. Donc, ce que j'ai fait est d'ouvrir mon gestionnaire de tâches et de terminer la tâche ma requête SQL. Cela a arrêté mon sql et l'a redémarré.
la source
Une réponse simple, si la case rouge "stop" ne fonctionne pas, est d'essayer d'appuyer sur les boutons "Ctrl + Pause" du clavier.
Si vous exécutez SQL Server sur Linux, il existe une application que vous pouvez ajouter à votre barre d'état système appelée "killall". Cliquez simplement sur le bouton "killall", puis cliquez sur le programme qui est pris dans une boucle et cela mettra fin au programme. J'espère que cela pourra aider.
la source
Je souffre de la même chose depuis longtemps. Cela se produit particulièrement lorsque vous êtes connecté à un serveur distant (ce qui peut être lent) ou que 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. Une seule approche profane a fonctionné
"La requête est en cours d'exécution. Voulez-vous annuler la requête?"
Cliquez sur "Oui"
Après un certain temps, il vous demandera si vous souhaitez enregistrer cette requête ou non?
Cliquez sur "Annuler"
Et postez cela, peut-être que votre studio est à nouveau stable pour exécuter votre requête.
Ce qu'il fait en arrière-plan déconnecte votre fenêtre de requête avec la connexion. Donc, pour réexécuter la requête, il faudra du temps pour connecter à nouveau le serveur distant. Mais croyez-moi, ce compromis est bien meilleur que la souffrance de voir cette minuterie qui court pour l'éternité.
PS: Cela fonctionne pour moi, félicitations si cela fonctionne aussi pour vous. !!!
la source