Osa*_*aly 2 sql-server-2008 sql-server resource-governor
有没有一种方法可以识别执行查询时实际消耗大量资源的顶级数据库用户?
SQL Server 中没有任何内置功能可以执行此操作。如果您不想使用 sp_who3 并像 2002 年一样参加聚会,这里还有另一种方法。
如果您只想看看现在发生了什么,请像这样运行:
EXEC dbo.sp_WhoIsActive @get_plans = 1, @get_locks = 1
如果您想长期使用它来了解用户在做什么,请按照此处的说明进行设置,将结果记录到表中。我可能会跳过在繁忙的服务器上收集查询计划,这真的会让事情变得臃肿。
这有什么帮助?它返回等待信息、tempdb 使用、阻塞、CPU、读取、写入、锁定、内存使用以及登录名、主机名和程序名称,以便您可以(如果您选择将其记录到表中)按连接信息进行分组随着时间的推移聚合资源使用情况。聚合不会是完美的,但它可能会让您足够接近您所需要的(免费)。
如果你想花钱,就买一个监控工具。Sentry One Performance Advisor 和 Quest Spotlight 都非常漂亮。
希望这可以帮助!