如何将查询状态从暂停更改为可运行?

时间:2018-01-24 05:38:43

标签: sql sql-server

我的查询需要更新200万条记录,但磁盘中没有空格,因此查询现在暂停。之后,我释放了一些空间,但查询仍处于暂停状态。那么我应该如何将状态更改为Runnable,或者有没有办法告诉sql server你现在有足够的空间,并且可以运行查询。

1 个答案:

答案 0 :(得分:0)

  

之后,我释放了一些空间,但查询仍然处于暂停状态。有没有办法告诉sql server你现在有足够的空间,你可以运行查询。

SQLSERVER会自动将查询状态从暂停状态更改为可运行状态,而不是由您管理..

这里的工作是检查,为什么查询被暂停..下载dmvs可以提供帮助

select session_id,blocking_session_id,wait_resource,wait_time,
last_wait_type from sys.dm_exec_requests
 where session_id=<< your session id>>

查询被暂停的原因有很多..其中一些包括锁定/阻止,回滚,从磁盘获取数据..

你必须按照上面的dmv检查状态,看看是什么原因并进行相应的故障排除..

下面是一些示例代码,可以帮助您了解暂停的含义

create table t1
(
id int
)

insert into t1
select row_number() over (order by (select null))
from
sys.objects c
cross join
sys.objects c1

现在在ssms的一个标签中: 在查询下方运行

begin tran
update t1
set id=id+1

打开另一个标签并在查询

下方运行
select * from t1

现在打开另一个标签并在查询

下方运行
 select session_id,blocking_session_id,wait_resource,wait_time,
 last_wait_type,status from sys.dm_exec_requests
 where session_id=<< your session id of select >>

或在查询

下运行
 select session_id,blocking_session_id,wait_resource,wait_time,
 last_wait_type,status from sys.dm_exec_requests
  where blocking_session_id>0

你可以看到状态因阻塞而暂停,一旦你清除阻塞(通过提交事务),你会看到sql server在这种情况下自动恢复暂停查询