如何查询SSAS实例中当前正在处理的表格模型?
查询SSAS实例中正在处理的表格模型方法
方法一:通过SSMS活动监视器查看
- 连接到目标SSAS实例,右键实例名称 → 选择「活动监视器」
- 切换到「正在执行的作业」标签页,这里会列出所有当前运行的操作。找包含
Process关键字的命令,就能识别出模型处理任务,同时能看到对应的模型名称、启动时间、会话ID等信息。
方法二:用DMV查询精准定位
SSAS提供动态管理视图(DMV)来获取实例运行状态,执行以下MDX查询即可直接获取正在处理的表格模型:
SELECT [DatabaseName], [Command], [StartTime], [SessionID], [Status], [ElapsedTime] FROM $SYSTEM.DISCOVER_SESSIONS WHERE [Command] LIKE '%Process%' AND [Status] = 'Running'
$SYSTEM.DISCOVER_SESSIONS包含所有当前会话的详细信息- 筛选
Command含Process且Status为Running的记录,就能精准定位正在处理的模型 - 额外的
ElapsedTime字段可以查看任务已经运行的时长
方法三:PowerShell脚本自动化查询
如果需要批量检查或自动化监控,可以用PowerShell结合ADOMD.NET实现:
# 加载ADOMD.NET程序集(路径根据SSAS版本调整,示例为SQL Server 2019) Add-Type -Path "C:\Program Files\Microsoft SQL Server\MSAS15.MSSQLSERVER\OLAP\bin\Microsoft.AnalysisServices.AdomdClient.dll" # 连接到SSAS实例 $connectionString = "Data Source=你的SSAS实例名;" $connection = New-Object Microsoft.AnalysisServices.AdomdClient.AdomdConnection($connectionString) $connection.Open() # 执行DMV查询 $command = $connection.CreateCommand() $command.CommandText = @" SELECT [DatabaseName], [Command], [StartTime], [SessionID], [ElapsedTime] FROM $SYSTEM.DISCOVER_SESSIONS WHERE [Command] LIKE '%Process%' AND [Status] = 'Running' "@ $reader = $command.ExecuteReader() # 输出查询结果 while ($reader.Read()) { Write-Host "模型名称: $($reader["DatabaseName"])" Write-Host "处理命令: $($reader["Command"])" Write-Host "启动时间: $($reader["StartTime"])" Write-Host "已运行时长: $($reader["ElapsedTime"])" Write-Host "会话ID: $($reader["SessionID"])" Write-Host "-------------------------" } # 清理资源 $reader.Close() $connection.Close()
注意:SSAS版本不同,ADOMD.NET程序集的路径会有差异,比如MSAS16对应SQL Server 2022,需要根据实际环境调整路径。
内容的提问来源于stack exchange,提问作者Eric Mamet
相关产品推荐
相关产品推荐

