我的服务器上有一个 Microsoft SQL Server 实例,其中包含 100 多个数据库和用户。有时,SQL Server 进程使用 100% 的服务器 CPU,我想知道是哪个查询/用户/数据库导致了这种情况并使用了如此多的资源。
对于 MySQL,我使用mysqladmin pr
命令查看当前连接了哪些用户。此外,慢查询日志显示需要超过 X 秒才能完成的查询。
我想知道 SQL Server 是否有类似的命令。
您可以使用大量动态管理视图 (DMV) 来获取数据,但最简单的方法是使用 Adam Machanic 的 sp_WhoIsActive 存储过程。这是有关如何使用它的视频:
http://www.brentozar.com/archive/2010/09/sql-server-dba-scripts-how-to-find-slow-sql-server-queries/
你可以从这里下载它:
输出包括数据库名称、使用的 CPU 周期、查询持续时间等列。