如何查看特定ssas cube的访问人数及查询流程?
查询特定SSAS Cube当前访问用户数的操作流程
所有操作需基于SSAS服务器管理员权限执行,无权限会触发访问拒绝错误,可根据版本和需求选择以下任意一种方法:
方法1:执行DMV查询(兼容所有SSAS版本,轻量高效)
- 打开SQL Server Management Studio(SSMS),选择服务器类型为「Analysis Services」,连接到目标SSAS实例
- 点击「新建查询」,打开MDX查询编辑窗口
- 执行如下查询语句,替换语句中占位的数据库名、Cube名为实际值即可获取结果:
-- 统计目标Cube的当前活跃访问用户数 SELECT COUNT(DISTINCT s.SESSION_ID) AS 总活跃会话数, COUNT(DISTINCT s.SESSION_USER_NAME) AS 去重后用户数 FROM $System.DISCOVER_SESSIONS s INNER JOIN $System.DISCOVER_OBJECT_ACTIVITIES o ON s.SESSION_ID = o.SESSION_ID WHERE -- 替换为目标Cube所属的SSAS数据库名称 o.OBJECT_PARENT_PATH = '替换为你的SSAS数据库名' -- 替换为需要统计的特定Cube名称 AND o.OBJECT_NAME = '替换为你的目标Cube名' -- 过滤超过10分钟无交互的空闲会话,可按需调整时间阈值 AND DATEDIFF(second, s.SESSION_LAST_COMMAND_END_TIME, GETUTCDATE()) < 600
- 返回结果中,「总活跃会话数」是所有独立连接的计数(同一个用户多端连接会被分别统计),「去重后用户数」是按登录账号去重的实际自然人访问数量。如果需要查看具体会话明细,可将COUNT聚合字段替换为
[SESSION_ID], [SESSION_USER_NAME], [SESSION_START_TIME], [SESSION_LAST_COMMAND]字段列表获取明细。
方法2:使用内置活动监视器可视化查看(SSAS 2016及以上版本适用)
- 在SSMS中连接到目标SSAS实例
- 在对象资源管理器中右键点击实例根节点,选择「活动监视器」
- 在弹出面板的「连接会话」列表中,通过「最后执行命令」列筛选包含目标Cube名称的条目,列表展示的行数即为对应的活跃访问数。
方法3:通过性能计数器做持续监控
- 登陆到SSAS服务器本地,打开性能监视器(运行
perfmon命令即可唤起) - 添加计数器,若需要实例级总连接数,选择对应SSAS实例下的「连接」分类中的「当前连接数」计数器;若需要按Cube粒度统计,选择「MSAS 对象」分类下的对应目标Cube实例,即可实时展示该Cube的当前活跃连接数。
注意:DMV查询默认返回UTC时间的会话时间戳,统计时间差时需要和当前UTC时间匹配,避免时差导致的会话判断偏差。
内容的提问来源于stack exchange,提问作者Sharath Reddy
相关产品推荐
相关产品推荐

