场景
数据库因非法断电导致出现分配页上不一致,运行完DBCC CHECKDB后出现以下错误:

表错误: 表 't_pc_id' (ID 277576027)。数据行在索引 'last_login_date' (ID 7)中没有匹配的索引行。与以下数据行匹配的索引行的键可能丢失或

关闭运行DBCC CHECKDB所在的SSSM时出现错误

重新打开SSMS ,查看索引last_login_date使用情况发现该索引没有被任何查询使用到,于是准备先禁用索引再后续删除

在一登陆界面上使用SSMS UI来禁用索引,结果发现UI无法操作(当时CPU使用率较高)

切换到另一登陆界面,在SSMS上运行以下语句:
ALTER INDEX [last_login_date] ON [dbo].[t_pc_id] DISABLE

语句运行半分钟没有结束

运行以下语句查看阻塞
SELECT
    SPID                = er.session_id
    ,STATUS             = ses.STATUS
    ,[LOGIN]            = ses.login_name
    ,HOST               = ses.host_name
    ,BlkBy              = er.blocking_session_id
    ,DBName             = DB_NAME(er.database_id)
    ,CommandType        = er.command
    ,SQLStatement       = st.text
    ,ObjectName         = OBJECT_NAME(st.objectid)
    ,ElapsedMS          = er.total_elapsed_time
    ,CPUTime            = er.cpu_time
    ,IOReads            = er.logical_reads + er.reads
    ,IOWrites           = er.writes
    ,LastWaitType       = er.last_wait_type
    ,StartTime          = er.start_time
    ,Protocol           = con.net_transport
    ,ConnectionWrites   = con.num_writes
    ,ConnectionReads    = con.num_reads
    ,ClientAddress      = con.client_net_address
    ,Authentication     = con.auth_scheme
FROM sys.dm_exec_requests er
OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st
LEFT JOIN sys.dm_exec_sessions ses
ON ses.session_id = er.session_id
LEFT JOIN sys.dm_exec_connections con
ON con.session_id = ses.session_id
WHERE er.session_id > 50

发现阻塞回话为113,命令类型为DBCC,阻塞语句为:
(@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000),@_msparam_3 nvarchar(4000)
,@_msparam_4 nvarchar(4000)) 
declare @database_id int  select @database_id = db_id()       
SELECT fi.avg_fragmentation_in_percent AS [AverageFragmentation]
FROM sys.tables AS tbl INNER JOIN sys.indexes AS i ON (i.index_id > @_msparam_0
and i.is_hypothetical = @_msparam_1)
AND (i.object_id=tbl.object_id)
INNER JOIN sys.dm_db_index_physical_stats(@database_id, NULL, NULL, NULL, 'LIMITED')
AS fi ON fi.object_id=CAST(i.object_id AS int) AND fi.index_id=CAST(i.index_id AS int)
WHERE (i.name=@_msparam_2)
and((tbl.name=@_msparam_3 and SCHEMA_NAME(tbl.schema_id)=@_msparam_4))

检查所有本地SSMS开打窗口,没有发现回话113
KILL回话113 后禁用索引语句立即运行完成

导致原因猜想:
1. 由禁用索引的UI导致(可能性较低)
2. 由之前运行结束的DBCC CHECKDB(有一定可能性)

疑难杂症--已停止运行DBCC造成阻塞的更多相关文章

  1. visual studio 2013 已停止运行 解决办法

    情况是这样,WINDOWS 8.1,双显卡笔记本,打开VS.NET 没几秒就提示 已停止运行,然后就关闭程序了,找了无数资料都没有解决 -------------------------------- ...

  2. Genymotion关于【启动后player.exe已停止运行】解决方案总结

    1. 你硬盘空间不足,或是暂存区不够,请少执行一些程序或关掉一些p2p的程序,或是到控制面板卸载一些不必要的程序.最好的建议是定期进行硬盘清理,确保不浪费多余空间 ---以上来源(http://www ...

  3. pyspider安装后,点击run,报pyhton has stop working或python已停止运行的错误

    问题解决虽然只有几句话,但是背后花了一天时间,各种FQ搜索. pyspider目测只支持32位的系统,所以你下载32位的python安装就行了,然后安装pyspider运行就没有问题了,坑爹啊---- ...

  4. Java Platform SE binary已停止运行 Can't load AMD 64-bit.dll on a IA 32-bit platform错误

    这个我是在junit测试web项目时候遇到的问题,然后今天遇到一位网友也遇到了,报问题的是A卡了,所以今天做个记载,方便遇到问题的人,因为,之前我个人遇到这个问题,在网上找了很久都没有找到. 上面这个 ...

  5. BAT面试题:使用数组实现一个简单的阻塞队列

    这道题是我亲身经历的一道大厂面试题,非常值得分享! 这道题可以分为两个步骤进行编码解答,第一步是基于数组实现一个队列,第二步是实现线程阻塞. 如果是基于数组实现栈的数据结构,那么我们只需要一个指针进行 ...

  6. java中使用阻塞队列实现生产这与消费这之间的关系

    需求如下: 有一个生产者和一个消费者,生产者不断的生产产品,消费这不断的消费产品.产品总数为N. 1.生产顺序按队列的方式,先进先出. 2.生产者和消费这可以同时进行. 3.当生产者生产了N个产品后不 ...

  7. 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值---部分内容可能不确切,待讨论

    1.阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,特别:返回值  ...

  8. Java -- 使用阻塞队列(BlockingQueue)控制线程通信

    BlockingQueeu接口是Queue的子接口,但是它的主要作用并不是作为容器,而是作为线程同步的工具. 特征: 当生产者线程试图向BlockingQueue中放入元素时,如果该队列已满,则该线程 ...

  9. 多线程编程学习六(Java 中的阻塞队列).

    介绍 阻塞队列(BlockingQueue)是指当队列满时,队列会阻塞插入元素的线程,直到队列不满:当队列空时,队列会阻塞获得元素的线程,直到队列变非空.阻塞队列就是生产者用来存放元素.消费者用来获取 ...

随机推荐

  1. jQuery基本API小结(上)--选择器-DOM操作-动画-Ajax

    一.JQuery基础选择器 1.基本选择器(CSS选择器) 2.$()中的()不一定是指定元素,也可能是函数. 3.“*”号选择器,它的功能是获取页面中的全部元素:$(“*”). 由于使用*选择器获取 ...

  2. Oracle的Spool导出数据

    出自:http://wallimn.iteye.com/blog/472182 实践 只能在一个终端上的一个窗口中进行操作 第一步:连接oracle数据库     sqlplus qkp/mm_eft ...

  3. mybatis 传入集合参数遍历 查询总结

    出自:http://blog.csdn.net/u013628152/article/details/51184641 1. findByIds(List ids) 如果参数的类型是List, 则在使 ...

  4. SPI子系统分析之二:数据结构

    内核版本:3.9.5 spi_master struct spi_master用来描述一个SPI主控制器,我们一般不需要自己编写spi控制器驱动. /*结构体master代表一个SPI接口,或者叫一个 ...

  5. Lamber算法 & SurfaceShader自定义光照

    [SurfaceShader自定义光照] 1.在pragma中添加自定义光照函数名:  #pragma surface surf BasicDiffuse 2.实现自定义光照函数.下面就是Lamber ...

  6. Python基础:面向对象基础 (一) 类及其属性和魔法方法

    定义类,添加和获取对象属性 # 定义类 格式如下 # class 类名: # 方法列表 # 新式类定义形式 # info 是一个实例方法,第一个参数一般是self,表示实例对象本身 class Her ...

  7. 简述 ascii、unicode、utf-8、gbk 的关系 (全网最全!!!)

    ascii 是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用 二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符, Unicode是为了统一世界各国语言的不用,统一 ...

  8. 85. Maximal Rectangle 由1拼出的最大矩形

    [抄题]: Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1 ...

  9. [c++] final override keyword

    the two keyword are aimed at virtual function final final function must be a virtual funtion , final ...

  10. vi/vim 消除搜索后的关键字高亮

    使用vi或vim命令搜索某个关键字之后,取消高亮显示的方法 只要输入:noh即可