【问题标题】:Is there a way to check Which Queries are run by a User in SSAS Tabular?有没有办法在 SSAS 表格中检查用户运行了哪些查询?
【发布时间】:2020-01-24 13:30:07
【问题描述】:

我正在使用基于 SSAS 表格的 BI 模型,使用 SQL Server 2016。多个团队成员正在查询它以满足他们的需求。我想知道正在运行哪些查询以及谁在运行这些查询。

找不到DMVs 对我的情况很有帮助。

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

Select * from $System.discover_sessions

【问题讨论】:

  • 我们使用扩展事件为 SSAS 多维提供了类似的工作。以下内容可能会为您指明正确的方向:mssqltips.com/sqlservertip/4548/…
  • 默认情况下不会捕获单个查询,因此您需要使用 @BarneyL 建议的扩展事件或 Profiler 跟踪来创建跟踪。
  • 您是否尝试过使用SQL Profiler
  • @Birel 是的,我确实尝试过。但我想知道一个更好的方法。

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


【解决方案1】:

其中最简单的仍然是 SQL Server Profiler。它一直存在,几乎被扩展事件所取代,但与 SSAS 一起工作得很好,并且很容易用它来跟踪活动。

【讨论】:

    【解决方案2】:

    对于“谁在运行这些查询”的问题,我们使用 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 服务运行,允许它在服务器重新启动时自动重新启动。

    【讨论】:

    • 这仅适用于多维模型(即,不是表格的答案)!
    猜你喜欢
    • 2019-08-21
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多