我正在测试一些连接并查询了一些大表。我无法停止查询,只是关闭了窗口。结束后有人问我
would you like to close the query
,我答应了。然后我重新启动了 SQL Server Management Studio。
问题是,从我在互联网上读到的内容来看,即使我取消了查询,查询仍在运行。我无法重新启动服务器并且我的权限受到限制。
我使用了
sp_who2 'active'
,然后找到了活动查询并尝试使用以下命令杀死它:kill 84
(我的查询的spid)。它返回:
消息 6102,第 14 级,状态 1,第 1 行
用户无权使用 KILL 语句。
然后我尝试了这个查询,但我也没有权限:
SELECT TOP 20
qs.sql_handle,
qs.execution_count,
qs.total_worker_time AS Total_CPU,
total_CPU_inSeconds = --Converted from microseconds
qs.total_worker_time/1000000,
average_CPU_inSeconds = --Converted from microseconds
(qs.total_worker_time/1000000) / qs.execution_count,
qs.total_elapsed_time,
total_elapsed_time_inSeconds = --Converted from microseconds
qs.total_elapsed_time/1000000,
st.text,
qp.query_plan
FROM
sys.dm_exec_query_stats as qs
CROSS APPLY
sys.dm_exec_sql_text(qs.sql_handle) as st
CROSS APPLY
sys.dm_exec_query_plan (qs.plan_handle) as qp
ORDER BY
qs.total_worker_time desc
下一站是使用这两个查询,它们可以工作并返回以下内容:
select * from master..sysprocesses
where status = 'runnable' --comment this out
order by CPU
desc
select * from master..sysprocesses
order by CPU
desc
面对我的限制,我现在能做什么?我想避免选择“让它运行”,因为我不知道需要多长时间,而且我不想降低性能。
任何建议都会受到欢迎。谢谢(sql server 2012)
为了加快执行速度,您可以按键盘上的 Alt+Break 来取消长时间运行的查询。请参阅此处了解更多选项:https://msdn.microsoft.com/en-us/library/aa833250(v=vs.90).aspx
ALTER TABLE orders
ADD COLUMN status VARCHAR(50) DEFAULT 'PENDING';
UPDATE orders
SET status = 'COMPLETE'
WHERE completed_at IS NOT NULL;
如果它仍在运行,让 DBA 帮你杀掉它