Colaboración : Cisco ICM Logger

Identificación y Borrado de un Proceso SQL Bloqueado

23 Octubre 2015 - Traducción Automática
Otras Versiones: PDFpdf | Inglés (22 Agosto 2015) | Comentarios


Contenido


Introducción

Este documento proporciona un método para identificar y quitar procesos de Microsoft SQL que bloquean otros procesos en el sistema Cisco Intelligent Contact Management (ICM). Es importante identificar los procesos SQL que bloquean otros procesos porque hacen parecer ilusión que los demás procesos están bloqueados. De hecho los procesos no están bloqueados, sino que están esperando simplemente que el proceso bloqueado libere los recursos.

prerrequisitos

Requisitos

Cisco recomienda que tenga conocimiento sobre estos temas:

  • Arquitectura de la base de datos del Cisco ICM

  • Arquitectura de la información del Cisco ICM

  • Utilidades de la consulta SQL de Microsoft (analizador de consultas para la versión 7.0 o 2000 del Microsoft SQL server o ISQL_W para la versión 6.5 del Microsoft SQL server)

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y hardware.

  • Versión 4.6.2 o posterior del Cisco ICM

  • Versión 6.5 o posterior del Microsoft SQL server

La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si la red está funcionando, asegúrese de haber comprendido el impacto que puede tener cualquier comando.

Convenciones

Consulte Convenciones de Consejos TécnicosCisco para obtener más información sobre las convenciones del documento.

Diagnostique los procesos bloqueados

Para determinar si los bloques de proceso SQL otros, el comando salvado sp_who necesitan ser ejecutarse con el analizador de consultas (versión 7.0 o 2000 del Microsoft SQL server) o el ISQL_W (versión de Microsoft SQL 6.5).

Esto muestra un resultado hipotético cuando funcionan con al comando sp_who.

Figura 1: sp_who

BLOCK-1.gif

Si un proceso tiene un valor en la columna de BlkBy, éste indica que el proceso es bloqueado por un proceso cuyo Server Process ID (SPID) sea ese valor. En este ejemplo, el proceso con SPID 9 bloquea el proceso con SPID 13. Por lo tanto, guarda ese proceso de completar.

Identifique la fuente de un proceso bloqueado

Una vez que usted ha determinado se bloquea qué proceso y qué proceso está bloqueando, el siguiente paso es determinar la fuente del proceso de bloqueo para poderla terminar.

Aunque sea posible utilizar las columnas del nombre de host y del login en la ventana de resultados del sp_who para diagnosticar la fuente de un proceso de bloqueo, en la mayoría de los casos éste no pudo proporcionar todos los detalles necesarios de lo que lo hace el proceso. Un método posible para obtener esta información es ir a la máquina que es la fuente del proceso de bloqueo y ver si hay un ISQL_W, un analizador de consultas o una sesión de Enterprise Manager colgado.

Una opción alternativa es mirar la parte de la interrogación que el de proceso funciona con para obtener la información de identificación adicional. Ejecutar este comando:

dbcc
inputbuffer(<x>)

En el sintaxis del comando precedente, x indica el SPID del proceso de bloqueo. Si usted utiliza los datos del comando sp_who mostrado en el cuadro 1, los iguales 9. x. Esto muestra un resultado hipotético cuando funcionan con al comando dbcc inputbuffer.

Figura 2: inputbuffer del dbcc

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

La interrogación se puede visualizar sin embargo con el comando dbcc inputbuffer, el propósito previsto de esta interrogación pudo todavía ser desconocida. Si éste es el caso, y si el nombre de host no se identifica claramente en los resultados del comando sp_who, publique este los comandos de red estándar SQL y DOS para identificar la dirección IP y el nombre de host de la fuente.

  1. Publique esta consulta SQL en el proceso de bloqueo SPID para obtener la dirección MAC de la máquina:

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

    En esta interrogación, y indica el SPID del proceso de bloqueo y se substituye por 9 (véase el cuadro 2).

    La columna de los net_address contiene la dirección MAC de la máquina que corresponde al SPID especificado.

  2. Publique este comando de red DOS en una ventana de DOS para determinar el IP Address que corresponde a este MAC address:

    arp
    -a
    

    Este comando visualiza la dirección IP de todas las máquinas conectadas.

  3. Coincidencia encima del valor de los net_address de la interrogación de los sysprocesses (el paso 1) con la dirección física correspondiente en el arp-a resulta (el paso 2). Esto determina si el IP Address que corresponde a la dirección física es el IP Address de la máquina que ejecuta el proceso de bloqueo. Publique este comando de red DOS en una ventana de DOS para encontrar el nombre de host correspondiente de esta máquina:

    ping -a
    <IPaddress>
    
    

    En este comando, <ipaddress> indica la dirección IP identificada con el comando arp -a.

    Cuando usted tiene la dirección IP y/o el nombre de host de la máquina que ejecuta el proceso de bloqueo, es más fácil rastrear el problema raíz del bloque.

Termine el proceso bloqueado

Hay tres métodos para terminar el proceso de bloqueo:

  • Acerqúese a la máquina que ejecuta el proceso de bloqueo y determine la aplicación que conecta con el Microsoft SQL server. Si la aplicación puede ser apagada, ciérrela.

    Nota: Si usted cierra la aplicación, puede ser que tarde una cierta hora. Esto depende de la naturaleza del trabajo hecho por la aplicación. Este proceso también acciona el Microsoft SQL server para realizar una restauración no actualizada de cualquier trabajo sin compromiso comenzado por la aplicación. Éste es el método más seguro para terminar el proceso que ofende.

  • Mate al proceso de bloqueo con este comando sql:

    kill
    <z>
    
    

    En este comando, el <z> es el SPID del proceso de bloqueo.

    precaución Precaución: El comando kill es mismo un enfoque peligroso para borrar el proceso de bloqueo porque puede potencialmente corrupto las bases de datos SQL si el proceso de bloqueo realiza una actualización de base de datos. El comando kill puede también tardar muy un rato para completar si el proceso de bloqueo ha realizado mucho trabajo que el proceso de la matanza debe deshacer (restauración no actualizada). Refiera a los libros SQL en línea para más información sobre el comando kill. Esto se debe incluir con el medio de instalación del Microsoft SQL server.

  • El método final para terminar el proceso de bloqueo es reiniciar la máquina que ejecuta el proceso de bloqueo.

    Nota: Como con la opción del comando kill, esto es mismo un enfoque peligroso para borrar el proceso de bloqueo porque la aplicación que está conectada con el Microsoft SQL server no se apaga limpio.

Discusiones relacionadas de la comunidad de soporte de Cisco

La Comunidad de Soporte de Cisco es un foro donde usted puede preguntar y responder, ofrecer sugerencias y colaborar con colegas.


Información Relacionada


Document ID: 22156