You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Analysis Service数据库冻结:无法执行XMLA或终止特定会话

Azure Analysis Service多维数据集冻结及会话无法终止问题

环境与配置

我有一个Azure Analysis Service(AAS)实例,部署了多个多维数据集(数据库),其数据源配置如下(连接SQL Server 2022实例):

"dataSources": [
  {
    "name": "SQL asazure://{location}/ServerName;ABC",
    "connectionString": "server=10.0.0.1;user=ABC;database=ABC",
    "impersonationMode": "impersonateServiceAccount",
    "account": "ABC",
    "provider": "System.Data.SqlClient"
  }
]

问题现象

每周会随机出现单个多维数据集“冻结”:针对该数据库的任何XMLA命令都会无限期运行。例如执行删除命令:

<Delete xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Object>
        <DatabaseID>ABC</DatabaseID>
    </Object>
</Delete>

(注:ABC是数据量极小的多维数据集)

通过以下XMLA查询可定位到阻塞命令:

SELECT * FROM $SYSTEM.DISCOVER_COMMANDS ORDER BY COMMAND_ELAPSED_TIME_MS

发现的阻塞命令是一个带事务的Batch刷新操作:

<Batch Transaction="true"
    xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Refresh
        xmlns="http://schemas.microsoft.com/analysisservices/2014/engine">
        <DatabaseID>ABC</DatabaseID>
        <Model>
            <xs:schema
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:sql="urn:schemas-microsoft-com:xml-sql">
                <xs:element>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element type="row"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:complexType name="row">
                    <xs:sequence>
                        <xs:element name="RefreshType" type="xs:long" sql:field="RefreshType" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:schema>
            <row
                xmlns="urn:schemas-microsoft-com:xml-analysis:rowset">
                <RefreshType>1</RefreshType>
            </row>
        </Model>
    </Refresh>
    <SequencePoint
        xmlns="http://schemas.microsoft.com/analysisservices/2014/engine">
        <DatabaseID>ABC</DatabaseID>
    </SequencePoint>
</Batch>

尝试用Cancel命令终止该会话(SPID示例为123456):

<Cancel xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <SPID>123456</SPID>
    <CancelAssociated>1</CancelAssociated>
</Cancel>

命令返回成功:

<return xmlns="urn:schemas-microsoft-com:xml-analysis">   
    <root xmlns="urn:schemas-microsoft-com:xml-analysis:empty" /> 
</return>

但该会话并未终止(其他SPID可正常终止),最终只能通过暂停并重启AAS实例解决,每次导致全实例10-20分钟停机,每周一次,无法接受。

疑问解答

1. 为何无法终止持续运行的会话?

  • 当命令处于不可中断的执行阶段时,Cancel命令无法生效。比如刷新操作正在执行底层I/O、持有关键锁或处于事务提交/回滚的核心步骤,AAS无法强制中断,否则可能引发数据损坏或实例不稳定。
  • 带Transaction="true"的Batch操作会持有跨对象锁,若操作卡在SQL Server数据源的阻塞状态(如SQL端锁等待),AAS的Cancel命令无法穿透到SQL层面终止底层查询,导致会话看似仍在运行。
  • AAS内部进程或资源死锁,会导致会话无法响应Cancel信号,属于实例级资源异常。

2. 该会话为何会随机无限期运行?

  • 数据源层面阻塞:SQL Server 2022实例可能存在锁等待、查询超时未正确传递,或数据源连接池异常,导致AAS刷新操作卡在数据拉取阶段。
  • AAS内部事务死锁:带事务的Batch刷新操作(Transaction="true")执行时,可能与其他并发操作(如元数据修改、其他刷新)产生内部死锁,导致操作无限期挂起。
  • 资源瓶颈:AAS实例的CPU、内存或存储IO达到阈值,刷新操作无法分配足够资源完成执行,进而挂起。
  • 全量刷新隐性问题:RefreshType=1(全量刷新)会重新处理整个模型数据,若模型存在隐藏计算逻辑、分区依赖或数据源视图异常,可能导致操作卡在某个阶段。

3. 如何避免此类无限期运行的情况?

  • 修改刷新事务模式:将Batch的Transaction="true"改为Transaction="false",或拆分刷新操作到多个无事务Batch中,减少锁持有时间和死锁风险。
  • 优化数据源连接与查询:
    • 在SQL Server端监控并优化刷新对应查询,确保无锁等待或慢查询;
    • 调整数据源连接字符串的超时参数(如添加Connect Timeout=30;Command Timeout=300),避免无限期等待SQL端响应;
    • 检查数据源 impersonation 设置,确保服务账号权限充足且无身份验证异常。
  • 调整刷新策略:
    • 避免全量刷新,改用增量刷新(RefreshType=2),减少数据处理量;
    • 错开多个多维数据集的刷新时间,避免并发操作引发的资源竞争;
    • 添加刷新操作超时监控,通过自动化工具(如Azure Logic Apps、PowerShell)检测长时间运行的刷新任务,提前干预;
    • 使用分区刷新代替全库刷新,降低单操作的资源占用。
  • 监控与告警:
    • 配置AAS诊断日志,监控DISCOVER_COMMANDS和DISCOVER_SESSIONS视图,及时发现长时间运行的命令;
    • 设置实例资源告警(CPU、内存、IO),避免资源耗尽;
    • 监控SQL Server端查询性能,确保AAS数据源查询能正常完成。
  • 升级与补丁:检查AAS实例版本,确保使用最新服务更新,微软可能已修复导致会话无法终止或挂起的已知bug。
  • 紧急处理优化:若Cancel命令无效,可尝试使用AAS PowerShell模块Invoke-ProcessASDatabase的强制终止参数,或通过Azure门户的“终止会话”功能(部分场景比手动XMLA Cancel更有效),减少重启实例的频率。

内容的提问来源于stack exchange,提问作者Dave R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:19:57