有没有办法在SSAS表格中检查用户正在运行哪些查询?

时间:2019-09-24 12:10:17

标签: sql-server ssas dax ssas-tabular ssms-2016

我使用的是基于SQL Server 2016的基于SSAS表格的BI模型。多个团队成员正在查询其需求。我想找出正在运行的查询以及谁正在运行这些查询。

在我的情况下,找不到DMVs很有帮助。

此查询仅显示用户最后运行的命令。

Select * from $System.discover_sessions

2 个答案:

答案 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服务运行,允许它在服务器重新启动时自动重新启动。