TZH*_*ZHX 5 sql-server dmv sql-server-2012
我针对 SQL Server 2012 创建了一个查询,如下所示:
SELECT r.session_id, r.sql_handle, t.text -- more details excluded for brevity
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
Run Code Online (Sandbox Code Playgroud)
现在,这有助于向我展示我的服务器上正在运行的内容——并且使用这样的查询,我已经能够找到比它们应该消耗更多资源的东西。
然而,令我困扰的是(因为交叉应用,我相信)sys.dm_exec_requests
没有包含 sql_handle 值的条目不包括在内。我也担心有时返回的请求数量(通常大约有十几个)低于我基于负载的预期。
我明白(或认为我明白)这是我能看到的时间视图中最有限的快照,而且 SQL 一次只能做这么多事情,但我也想知道,我的查询缺少什么来向我展示“现在什么在使用我的服务器”?
当前查询的问题是您只查找可能在此时运行的查询。要全面了解服务器状态,您可以尝试运行 SQL Server Profiler 或检查与内置存储过程(如sp_who
. 与使用其他 DBA 已开发和测试的存储过程相比,这些方法更加复杂且耗时。
我建议您安装Adam Machanic的免费存储过程,名为sp_whoisactive
. 最新版本应该足以帮助您深入了解服务器上的活动。与编写引用一两个 DMV 的查询相比,此过程还将为您提供更详细的信息。根据文档,sp_whoisactive
使用 15 个 DMV。