协作 : Cisco ICM Logger

识别并且清除一个阻塞的SQL进程

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈


目录


简介

本文提供一个方法识别和删除Microsoft阻挠在Cisco Intelligent Contact Management的SQL进程(ICM)系统的其他进程。识别阻挠其他进程的SQL进程是重要的,因为促进幻觉暂停其他进程。实际上,没有暂停进程,然而等待资源由阻塞流程发布。

先决条件

要求

Cisco 建议您了解以下主题:

  • Cisco ICM数据库体系结构

  • 报告体系结构的Cisco ICM

  • Microsoft SQL查询程序(Microsoft SQL Server版本7.0或2000的Microsoft SQL Server版本6.5的查询分析器或ISQL_W)

使用的组件

本文档中的信息基于以下软件和硬件版本:

  • Cisco ICM 第4.6.2版或更高

  • Microsoft SQL Server版本6.5或以上

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

诊断被阻塞的流程

为了确定SQL影印版其他, sp_who存储的命令是否需要是运行以查询分析器(Microsoft SQL Server版本7.0或2000)或ISQL_W (Microsoft SQL版本6.5)。

sp_who命令运行时,这显示假定结果。

图 1:sp_who

BLOCK-1.gif

如果进程有一个值在BlkBy列,这指示进程由Server Process ID (SPID)是该值的进程阻塞。在本例中,与SPID 9的进程阻挠与SPID 13的进程。所以,它保持从完成的该进程。

识别被阻塞的流程的来源

一旦确定了哪进程阻塞,并且哪进程是阻塞,下一步是确定阻塞流程的来源,以便可以终止。

虽然使用主机名和洛金列在Sp_who结果窗口为了诊断阻塞进程的来源是可能的,在大多数情况下这也许不提供什么的所有必要的细节进程。得到是阻塞流程来源和看到的此信息的一个可能的方法将去计算机是否有一暂停的ISQL_W、查询分析器或者企业管理器会话。

一个可选择的方案是查看进程运行为了获取识别信息的其他的一部分的查询。发出以下命令:

dbcc
inputbuffer(<x>)

在以前的命令命令语法, x指示阻塞流程的SPID。如果在图1使用从显示的sp_who命令的数据, x等于9。当dbcc inputbuffer命令运行时,这显示假定结果。

图 2:dbcc inputbuffer

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

虽则查询可以用dbcc inputbuffer命令显示,此查询打算的目的也许仍然未知。如果这是实际情形,并且,如果主机名在sp_who命令结果没有清楚地识别,请发出这些标准SQL和DOS网络命令为了识别来源的IP地址和主机名。

  1. 发出在阻塞流程SPID的此SQL查询为了得到计算机的MAC地址:

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

    在此查询, y指示阻塞流程的SPID和用9替换(请参见图2)

    net_address列包含对应于特定的SPID计算机的MAC地址。

  2. 发出在DOS窗口的此DOS网络命令为了确定对应于此MAC地址的IP地址:

    arp
    -a
    

    此命令显示所有已连接机器的IP地址。

  3. 配合从sysprocesses查询的net_address值(与对应的物理地址的步骤1)在arp-a发生(步骤2)。这确定IP地址对应于物理地址是否是运行阻塞流程计算机的IP地址。发出在DOS窗口的此DOS网络命令为了查找此计算机对应的主机名:

    ping -a
    <IPaddress>
    
    

    在此命令, <IPaddress>指示用arp - a命令识别的IP地址。

    当您有运行阻塞流程计算机的IP地址和主机名时,搜寻块的根本问题是更加容易的。

结束被阻塞的流程

有结束阻塞流程的三个方法:

  • 接近计算机运行的阻塞流程并且确定连接到Microsoft SQL Server的应用程序。如果应用程序可以被关闭,请结束它。

    注意: 如果关闭应用程序,也许采取一些时间。这取决于应用程序完成的工作的本质。此进程也触发Microsoft SQL Server执行应用程序开始的所有未提交的工作回退。这是结束触犯的进程的最安全的方法。

  • 结束阻塞流程用此sql命令:

    kill
    <z>
    
    

    在此命令, <z>是阻塞流程的SPID。

    警告 警告: kill命令是清除阻塞流程的一个非常危险方法,因为能潜在损坏SQL数据库,如果阻塞流程执行一数据库更新。kill命令能相当也需要一会儿完成,如果阻塞流程进行了杀害进程必须取消的很多工作(回退)。参考的SQL书联机关于kill命令的更多信息。应该包括这与Microsoft SQL Server安装媒体。

  • 结束运行阻塞流程的阻塞流程的最终方法将重新启动计算机。

    注意: 如同kill命令选项,这是清除阻塞流程的一个非常危险方法,因为连接到Microsoft SQL Server的应用程序干净地没有被关闭。


相关信息


Document ID: 22156