SSAS Cube 处理日志

SSAS Cube processing logs

SSAS 多维数据集处理(不是错误,不是飞行记录器)日志存储在哪里?

我们有一个 SQL 代理作业 运行 宁一个 SQL 服务器分析服务命令。其中有一些 DMX 处理每个维度然后处理立方体数据库(包含两个立方体)

我想知道每个查询需要多长时间。每个维度一个查询,每个度量组一个查询

立方体原来需要 20 分钟,现在需要 2 小时。

我们正在使用 SSAS 2008 R2

我搜索了很长时间,据我所知没有这样的日志。

不是重复的问题:

Error Log records in SSAS

get output of last Process on SSAS cube

我不想使用 Profiler。我想看看每个查询至少在最后一个多维数据集构建中花费了多长时间。如果我 运行 交互,我可以看到所有这些信息。我如何让它在 运行 工作时记录此信息?

有几个选项。您可以按原样继续处理多维数据集,但开始记录所有处理事件。除了 Profiler GUI,还有三种主要方法可以做到这一点:

  1. 服务器端跟踪将 .trc 文件写入 SSAS 服务器上的磁盘,开销很小: http://blogs.msdn.com/b/karang/archive/2009/11/02/sql-2005-sql-2008-analysis-services-server-side-tracing.aspx 然后你可以将它加载到 SQL 服务器,以便稍后通过 PowerShell 进行分析: http://www.bp-msbi.com/2012/02/counting-number-of-queries-executed-in-ssas/

  2. 安装名为 ATrace 的社区维护服务,它使用 Profiler API(无 GUI)并将您选择的 Profiler 事件直接写入 SQL 服务器实时。 https://github.com/Microsoft/Analysis-Services/tree/master/AsTrace

  3. 记录 XEvents 并稍后分析它们: http://blog.crossjoin.co.uk/2012/05/05/using-xevents-in-ssas-2012/ 要么: https://francescodechirico.wordpress.com/2012/08/03/identify-storage-engine-and-formula-engine-bottlenecks-with-new-ssas-xevents-5/

所有这些选项都将记录所有正在处理的事务。您可以选择要记录的事件(例如,处理事件而不是查询)。

但另一种选择是使用会话跟踪。您可以在 SQL Agent 中停止使用 "SQL Server Analysis Services Command" 步骤类型并开始使用 PowerShell 步骤类型并执行如下操作。此示例是 运行 来自 PowerShell 的 SSAS 备份,带有 SessionTrace 以监视该会话的所有 "profiler" 事件: https://gallery.technet.microsoft.com/scriptcenter/Backup-Ssas-Databases-with-da62b084