Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server-为什么我的SPID是;暂停使用;但在创建索引时未被阻止?_Sql Server_Suspend - Fatal编程技术网

Sql server SQL Server-为什么我的SPID是;暂停使用;但在创建索引时未被阻止?

Sql server SQL Server-为什么我的SPID是;暂停使用;但在创建索引时未被阻止?,sql-server,suspend,Sql Server,Suspend,我有一台SQL 2005 x64服务器,当我试图对它发出一些查询时(例如,当我尝试创建索引时),我的SPID立即进入“休眠”,并且似乎无限期地等待。它没有被阻塞(SP_WHO2中的“BLKBY”列为空),CPU和DiskIO值非常小(每个值小于300),并且没有增长 我的查询可能在等待什么?如果我在索引的表外执行SELECT*操作,我将在一分钟左右的时间内返回所有的百万行,这样就不会阻塞表访问,甚至(看起来)表争用 还有什么我可以查的吗?我是否只需要让步并重新启动我的SQL实例?:) 详细信息:

我有一台SQL 2005 x64服务器,当我试图对它发出一些查询时(例如,当我尝试创建索引时),我的SPID立即进入“休眠”,并且似乎无限期地等待。它没有被阻塞(SP_WHO2中的“BLKBY”列为空),CPU和DiskIO值非常小(每个值小于300),并且没有增长

我的查询可能在等待什么?如果我在索引的表外执行SELECT*操作,我将在一分钟左右的时间内返回所有的百万行,这样就不会阻塞表访问,甚至(看起来)表争用

还有什么我可以查的吗?我是否只需要让步并重新启动我的SQL实例?:)


详细信息:我正在从SSMS中的另一个选项卡运行创建索引,它永远不会返回-它只是显示“正在执行”并且永远不会返回,因此我不认为该过程已被放弃。

命令已完成,连接正在等待下一个命令

从URL: “这个问题和SQL Server一样古老。事实上,它可以追溯到Sybase时代,但仍然愚弄和困扰着管理员

处于休眠/等待命令状态的会话只是一个客户端连接,没有到SQL Server的活动查询。下表显示了会话从运行状态到休眠状态的转换。“

select*
从sys.dm_exec_请求r
在r.session\u id=t.session\u id上加入sys.dm\u os\u任务
其中r.session_id=;

这将不仅显示请求的状态,还显示请求生成的所有任务。在线创建索引可能会产生并行线程,并将暂停自身,直到它们完成

有时,“暂停”状态可能会产生误导。例如,您的查询可能在等待磁盘I/O完成时被“挂起”。这可以通过运行下面的查询并检查wait_type列来验证
PAGEIOLATCH_EX
表示查询由于等待磁盘I/O而被阻止。这并不意味着查询没有进展

有关
PAGEIOLATCH\u EX

下面是返回上述信息的查询

 SELECT qs.percent_complete ,
        qs.session_id ,
        scheduler_id ,
        blocking_session_id ,
        qs.status ,
        command ,
        wait_time ,
        wait_type ,
        last_wait_type ,
        wait_resource ,
        ST.text ,
        host_name ,
        program_name
 FROM   sys.dm_exec_requests qs
        LEFT JOIN sys.dm_exec_sessions es ON ( qs.session_id = es.session_id )
        CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS ST

但是我正在运行来自SSMS的命令,我的会话仍然显示“正在执行”-它看起来根本没有完成,而且它以“挂起”的方式太快而无法实际完成。有趣的链接,虽然-我不知道这种联系。很好的答案。这正是我想要的。这让我明白了问题的症结所在。谢谢你救了我一命!如果只返回一行并且其状态为“挂起”?感谢您的查询。它确实有助于锁定占用CPU时间和IO的命令。
 SELECT qs.percent_complete ,
        qs.session_id ,
        scheduler_id ,
        blocking_session_id ,
        qs.status ,
        command ,
        wait_time ,
        wait_type ,
        last_wait_type ,
        wait_resource ,
        ST.text ,
        host_name ,
        program_name
 FROM   sys.dm_exec_requests qs
        LEFT JOIN sys.dm_exec_sessions es ON ( qs.session_id = es.session_id )
        CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS ST