SQL Server:如何取消正在运行的查询?

问题描述 投票:0回答:3

我正在测试一些连接并查询了一些大表。我无法停止查询,只是关闭了窗口。结束后有人问我

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)

sql-server sql-server-2012
3个回答
-1
投票

为了加快执行速度,您可以按键盘上的 Alt+Break 来取消长时间运行的查询。请参阅此处了解更多选项:https://msdn.microsoft.com/en-us/library/aa833250(v=vs.90).aspx


-1
投票
ALTER TABLE orders
ADD COLUMN status VARCHAR(50) DEFAULT 'PENDING';

UPDATE orders
SET status = 'COMPLETE'
WHERE completed_at IS NOT NULL;

-2
投票

如果它仍在运行,让 DBA 帮你杀掉它

© www.soinside.com 2019 - 2024. All rights reserved.