Azure自动化PowerShell Runbook使用OleDb连接SSAS失败,求解决方案
Azure自动化Runbook连接SSAS遇MDAC异常的解决办法
问题背景
在Azure自动化账户的PowerShell Runbook中,尝试通过OLEDB连接SSAS服务器执行DAX查询提取表元数据,代码如下:
$daxConnectionString = "Provider=MSOLAP;Data Source=$daxServer;Initial Catalog=$daxCatalog;UID=$daxUserId;PWD=$daxPwd" $daxConnection = New-Object -TypeName System.Data.OleDb.OleDbConnection $daxConnection.ConnectionString = $daxConnectionString $daxConnection.Open() $daxCommand = $daxConnection.CreateCommand()
运行时触发以下异常:
System.Management.Automation.MethodInvocationException: Exception calling "Open" with "0" argument(s): "The .Net Framework Data Providers require Microsoft Data Access Components(MDAC). Please install Microsoft Data Access Components(MDAC) version 2.6 or later." ---> System.InvalidOperationException: The .Net Framework Data Providers require Microsoft Data Access Components(MDAC). Please install Microsoft Data Access Components(MDAC) version 2.6 or later. ---> System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {2206CDB2-19C1-11D1-89E0-00C04FD7A829} failed due to the following error: 800736b1 The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail. (Exception from HRESULT: 0x800736B1).
核心原因
Azure自动化的沙箱环境不支持MDAC这类传统COM组件的部署,且旧版MDAC已不再适配现代SSAS驱动需求,报错中的CLSID对应旧版MSOLAP驱动,存在依赖缺失问题。
解决方法
1. 采用官方推荐的SqlServer模块执行DAX查询
这是最简便的方案,无需依赖COM组件:
- 登录Azure自动化账户,在「模块」页面搜索并导入
SqlServer模块 - 使用
Invoke-ASCmdcmdlet替代OLEDB连接,示例代码:
# 替换为你的元数据查询语句 $daxQuery = @" EVALUATE SELECTCOLUMNS( TABLES(), "TableName", [Name], "TableDescription", [Description] ) "@ # 使用自动化账户中存储的凭据 $ssasCredential = Get-AutomationPSCredential -Name "SSAS_Admin_Credential" Invoke-ASCmd -Server $daxServer -Database $daxCatalog -Query $daxQuery -Credential $ssasCredential
2. 部署混合Runbook辅助角色
如果必须保留OLEDB连接方式:
- 在本地或Azure VM上部署混合Runbook辅助角色,确保该服务器已安装Microsoft Analysis Services OLE DB Provider(而非旧版MDAC)
- 将Runbook配置为在混合角色上运行,利用本地环境的驱动支持
3. 替换为现代SSAS驱动
若坚持使用OLEDB,需确保目标环境安装最新版的Microsoft Analysis Services OLE DB Provider,该驱动包含必要的依赖,无需单独安装MDAC。可通过SQL Server安装介质或微软官方渠道下载独立安装包。
内容的提问来源于stack exchange,提问作者Bart
相关产品推荐
相关产品推荐

