首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >列出SQL Server上运行的查询

列出SQL Server上运行的查询
EN

Stack Overflow用户
提问于 2009-06-03 04:35:32
回答 17查看 740.3K关注 0票数 220

有没有办法列出当前在MS SQL Server上运行的查询(通过企业管理器或SQL)和/或连接的用户?

我想我有一个很长时间运行的查询正在我的一个数据库服务器上执行,我想跟踪它并阻止它(或不断启动它的人)。

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2009-06-05 13:24:29

这将显示SQL 2000或SQL 2005服务器上运行时间最长的SPID:

代码语言:javascript
复制
select
    P.spid
,   right(convert(varchar, 
            dateadd(ms, datediff(ms, P.last_batch, getdate()), '1900-01-01'), 
            121), 12) as 'batch_duration'
,   P.program_name
,   P.hostname
,   P.loginame
from master.dbo.sysprocesses P
where P.spid > 50
and      P.status not in ('background', 'sleeping')
and      P.cmd not in ('AWAITING COMMAND'
                    ,'MIRROR HANDLER'
                    ,'LAZY WRITER'
                    ,'CHECKPOINT SLEEP'
                    ,'RA MANAGER')
order by batch_duration desc

如果您需要从结果中查看针对给定spid运行的SQL,请使用类似以下内容:

代码语言:javascript
复制
declare
    @spid int
,   @stmt_start int
,   @stmt_end int
,   @sql_handle binary(20)

set @spid = XXX -- Fill this in

select  top 1
    @sql_handle = sql_handle
,   @stmt_start = case stmt_start when 0 then 0 else stmt_start / 2 end
,   @stmt_end = case stmt_end when -1 then -1 else stmt_end / 2 end
from    sys.sysprocesses
where   spid = @spid
order by ecid

SELECT
    SUBSTRING(  text,
            COALESCE(NULLIF(@stmt_start, 0), 1),
            CASE @stmt_end
                WHEN -1
                    THEN DATALENGTH(text)
                ELSE
                    (@stmt_end - @stmt_start)
                END
        )
FROM ::fn_get_sql(@sql_handle)
票数 226
EN

Stack Overflow用户

发布于 2009-06-02 20:37:49

您可以运行sp_who命令来获取所有当前用户、会话和进程的列表。然后,您可以在阻止其他spid的任何spid上运行KILL命令。

票数 34
EN

Stack Overflow用户

发布于 2009-06-02 20:43:43

产品中内置了各种管理视图。在SQL2000上,您将使用sysprocesses。在SQL2K5上,有更多像sys.dm_exec_connectionssys.dm_exec_sessionssys.dm_exec_requests这样的视图。

也有像sp_who这样的过程可以利用这些视图。在2K5 Management Studio中,您还可以获得活动监视器。

最后但并非最不重要的是,还有像Who Is Active by Adam Machanic这样的社区贡献的脚本。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/941763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档