我的查询需要更新200万条记录,但磁盘中没有空格,因此查询现在暂停。之后,我释放了一些空间,但查询仍处于暂停状态。那么我应该如何将状态更改为Runnable,或者有没有办法告诉sql server你现在有足够的空间,并且可以运行查询。
答案 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在这种情况下自动恢复暂停查询