我使用的是基于SQL Server 2016的基于SSAS表格的BI模型。多个团队成员正在查询其需求。我想找出正在运行的查询以及谁正在运行这些查询。
在我的情况下,找不到DMVs很有帮助。
此查询仅显示用户最后运行的命令。
Select * from $System.discover_sessions
答案 0 :(得分:0)
其中最简单的仍然是SQL Server Profiler。它已经存在了很长时间,几乎被扩展事件所取代,但是可以与SSAS一起使用,并且可以轻松地跟踪活动。
答案 1 :(得分:0)
对于“谁在运行那些查询”这一问题,我们使用SSAS的“ Query Logs”功能。
一旦在SSAS服务器中设置了一堆属性,它将开始记录到已配置的SQL Server表中。
要启用查询日志,请按照下列步骤操作:
(1)创建一个SQL Server关系数据库来存储查询日志。
(2)授予Analysis Services服务帐户对数据库的足够权限。该帐户需要创建表,写入表以及从表中读取的权限。
(3)在SQL Server Management Studio中,右键单击Analysis Services |。属性|常规,将CreateQueryLogTable设置为true。
(4)(可选)如果要以不同的速率对查询进行采样或更改表的名称,则更改QueryLogSampling或QueryLogTableName。
不幸的是,查询日志不记录查询!但是,它确实有助于查找谁/何时运行查询。
启用日志记录后,您可以在表格中查询统计信息。
SELECT CAST(starttime AS DATE) 'Date'
, MSOLAP_User 'User'
, COUNT(1) 'No. of queries'
FROM [dbo].[OlapQueryLog]
GROUP BY MSOLAP_User
, CAST(starttime AS DATE)
ORDER BY 1 DESC, 3 DESC
还有AsTrace工具
对于持续的监视和日志记录,ASTrace工具将捕获Profiler跟踪并将其写入SQL Server表,而无需GUI。 ASTrace还作为Windows服务运行,允许它在服务器重新启动时自动重新启动。