Collaboration : Cisco ICM Logger

Identifier et supprimer un processus SQL bloqué

17 décembre 2015 - Traduction automatique
Autres versions: PDFpdf | Anglais (22 août 2015) | Commentaires


Contenu


Introduction

Ce document fournit une méthode pour identifier et retirer les processus SQL de Microsoft qui bloquent d'autres processus dans le système de l'Intelligent Contact Management de Cisco (missile aux performances améliorées). Il est important d'identifier les processus SQL qui bloquent d'autres processus parce qu'ils favorisent l'illusion que les autres processus sont arrêtés. En fait, les processus ne sont pas arrêtés, mais attendent simplement des ressources à libérer par le processus de blocage.

Conditions préalables

Conditions requises

Cisco vous recommande de prendre connaissance des rubriques suivantes :

  • Architecture de base de données ICM de Cisco

  • Architecture d'enregistrement missile aux performances améliorées de Cisco

  • Utilitaires de requête SQL de Microsoft (analyseur de requête pour la version 7.0 ou 2000 de Microsoft SQL Server ou ISQL_W pour le Microsoft SQL Server version 6.5)

Composants utilisés

Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :

  • Version 4.6.2 ou ultérieures missile aux performances améliorées de Cisco

  • Microsoft SQL Server version 6.5 ou plus tard

Les informations contenues dans ce document ont été créées à partir des périphériques d'un environnement de laboratoire spécifique. Tous les périphériques utilisés dans ce document ont démarré avec une configuration effacée (par défaut). Si votre réseau est opérationnel, assurez-vous que vous comprenez l'effet potentiel de toute commande.

Conventions

Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.

Diagnostiquez les processus bloqués

Afin de déterminer si les blocs de processus SQL d'autres, la commande enregistrée par sp_who doit être de s'exécuter avec l'analyseur de requête (version 7.0 ou 2000 de Microsoft SQL Server) ou l'ISQL_W (version 6.5 de Microsoft SQL).

Ceci donne un résultat hypothétique quand la commande de sp_who est exécutée.

Figure 1 : sp_who

BLOCK-1.gif

Si un processus a une valeur dans la colonne de BlkBy, ceci indique que le processus est bloqué par un processus dont l'ID de processus de serveur (SPID) est cette valeur. Dans cet exemple, le processus avec SPID 9 bloque le processus avec SPID 13. Par conséquent, il garde ce processus de se terminer.

Identifiez la source de processus bloqué

Une fois que vous avez déterminé quel processus est bloqué et quel processus bloque, l'étape suivante est de déterminer la source de processus de blocage de sorte qu'elle puisse être terminée.

Bien qu'il soit possible d'employer les colonnes d'adresse Internet et de procédure de connexion dans la fenêtre de résultats de sp_who afin de diagnostiquer la source de processus de blocage, dans la plupart des cas ceci ne pourrait pas fournir tous les détails nécessaires de ce que le processus fait. Une méthode possible pour obtenir ces informations est d'aller à l'ordinateur qui est la source de processus de blocage et voir s'il y a des ISQL_W, un analyseur de requête ou session d'un gestionnaire arrêté d'entreprise.

Une autre option est de regarder une partie de la requête que le de processus exécute afin d'obtenir l'information d'identification supplémentaire. Émettez la commande suivante :

dbcc
inputbuffer(<x>)

Dans la syntaxe de commande précédente, x indique le SPID du processus de blocage. Si vous utilisez les données du sp_who commandent affiché dans la figure 1, les égaux 9. x. Ceci donne un résultat hypothétique quand la commande d'inputbuffer de dbcc est exécutée.

Figure 2 : inputbuffer de dbcc

/image/gif/paws/22156/BLOCK-2.gif

Cependant la requête peut être affichée avec la commande d'inputbuffer de dbcc, le but visé de cette requête pourrait être toujours inconnue. Si c'est le cas, et si l'adresse Internet n'est pas clairement identifiée dans la commande de sp_who résulte, des commandes émettez ces réseau standard SQL et DOS afin d'identifier l'adresse IP et l'adresse Internet de la source.

  1. Émettez cette requête SQL sur le processus de blocage SPID afin d'obtenir l'adresse MAC de l'ordinateur :

    select * from master.dbo.sysprocesses where
    spid = <y>
    

    Dans cette requête, y indique le SPID du processus de blocage et est remplacé par 9 (voir le schéma 2).

    La colonne de net_address contient l'adresse MAC de l'ordinateur qui correspond au SPID spécifié.

  2. Émettez cette commande de réseau DOS dans une fenêtre DOS afin de déterminer l'adresse IP qui correspond à cette adresse MAC :

    arp
    -a
    

    Cette commande affiche l'adresse IP de tous les ordinateurs connectés.

  3. Correspondance vers le haut de la valeur de net_address de la requête de sysprocesses (étape 1) avec l'adresse physique correspondante dans l'ARP - résultats (étape 2). Ceci détermine si l'adresse IP qui correspond à l'adresse physique est l'adresse IP de la machine qui exécute le processus de blocage. Émettez cette commande de réseau DOS dans une fenêtre DOS afin de trouver l'adresse Internet correspondante de cet ordinateur :

    ping -a
    <IPaddress>
    
    

    Dans cette commande, le <IPaddress> indique l'adresse IP identifiée avec l'ARP - une commande.

    Quand vous avez l'adresse IP et/ou l'adresse Internet de l'ordinateur qui exécute le processus de blocage, il est plus facile de dépister le problème racine du bloc.

Finissez le processus bloqué

Il y a trois méthodes pour finir le processus de blocage :

  • Approchez l'ordinateur qui exécute le processus de blocage et déterminez l'application qui connecte à la Microsoft SQL Server. Si l'application peut être arrêtée, clôturez-la.

    Remarque: Si vous clôturez l'application, elle pourrait prendre un certain temps. Ceci dépend de la nature du travail effectué par l'application. Ce processus déclenche également la Microsoft SQL Server pour exécuter un repositionnement de n'importe quel travail non engagé commencé par l'application. C'est la méthode la plus sûre pour finir le processus offensant.

  • Détruisez le processus de blocage avec cette commande SQL :

    kill
    <z>
    
    

    Dans cette commande, le <z> est le SPID du processus de blocage.

    attention Attention : La commande de mise à mort est une approche très dangereuse pour effacer le processus de blocage parce qu'elle peut potentiellement corrompu la base de données SQL si le processus de blocage exécute une mise à jour de base de données. La commande de mise à mort peut également prendre tout à fait un moment pour se terminer si le processus de blocage a effectué beaucoup de travail que le processus de mise à mort doit annuler (repositionnement). Référez-vous aux ouvrages SQL en ligne pour plus d'informations sur la commande de mise à mort. Ceci devrait être inclus avec les medias d'installation de Microsoft SQL Server.

  • La méthode finale pour finir le processus de blocage est de redémarrer l'ordinateur qui exécute le processus de blocage.

    Remarque: Comme avec l'option de commande de mise à mort, c'est une approche très dangereuse pour effacer le processus de blocage parce que l'application qui est connectée à la Microsoft SQL Server n'est pas arrêtée proprement.

Conversations connexes de la communauté de soutien de Cisco

Le site Cisco Support Community est un forum où vous pouvez poser des questions, répondre à des questions, faire part de suggestions et collaborer avec vos pairs.


Informations connexes


Document ID: 22156