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

Azure上SQL Analysis Server(15.0.0.52)表格模型刷新脚本报错求助

解决Azure Analysis Services表格模型PowerShell刷新脚本的认证错误问题

我看你遇到的核心问题是AzureRM模块过时导致的服务主体登录失败,以及Analysis Services认证方式不匹配,下面一步步帮你修复:

一、换掉过时的AzureRM模块,改用Az模块

AzureRM早在2020年就停止更新了,Azure自动化现在默认推荐用Az模块,这也是你出现unknown_user_type错误的主要原因。我们直接用自动化账户自带的RunAs连接来登录,不需要单独调用Get-AutomationPSCredential(除非你有特殊需求)。

替换原有登录和订阅选择的代码:

# 获取自动化账户的RunAs连接信息
$Connection = Get-AutomationConnection -Name "AzureRunAsConnection"

# 使用Az模块登录服务主体
Write-Output "Login to Azure using automation account service principal."
Connect-AzAccount `
    -ServicePrincipal `
    -Tenant $Connection.TenantId `
    -ApplicationId $Connection.ApplicationId `
    -CertificateThumbprint $Connection.CertificateThumbprint

# 设置当前订阅上下文(替代原来的Select-AzureRmSubscription)
Write-Output "Setting context to subscription '$($Connection.SubscriptionId)'."
Set-AzContext -Subscription $Connection.SubscriptionId

二、修复Analysis Services数据库刷新的认证逻辑

Invoke-ProcessASDatabase属于SqlServer模块的命令,直接传PSCredential会导致认证失败,我们需要用服务主体的证书认证方式来对接Azure AS。

前置检查:

  1. 确保你的自动化账户里安装了SqlServer模块(版本≥21.0),可以在自动化账户的「模块」选项里搜索添加。
  2. 检查你的AnalysisServerName变量格式,不要带:rw后缀,正确格式是asazure://<region>.asazure.windows.net/<servername>(比如asazure://westus.asazure.windows.net/dex)。

替换原有数据库处理的代码:

# 获取自动化变量
$DatabaseName = Get-AutomationVariable -Name 'DatabaseName'
$AnalysisServerName = Get-AutomationVariable -Name 'AnalysisServerName'

# 输出日志信息
Write-Output "Initiating full refresh for database: $DatabaseName on server: $AnalysisServerName"

# 用服务主体认证执行AS数据库刷新
Invoke-ProcessASDatabase `
    -DatabaseName $DatabaseName `
    -Server $AnalysisServerName `
    -RefreshType "Full" `
    -ServicePrincipal `
    -ApplicationId $Connection.ApplicationId `
    -TenantId $Connection.TenantId `
    -CertificateThumbprint $Connection.CertificateThumbprint

三、完整的修正后脚本

把所有部分整合起来,就是这个完整的脚本:

# 获取自动化账户的RunAs连接信息
$Connection = Get-AutomationConnection -Name "AzureRunAsConnection"

# 使用Az模块登录服务主体
Write-Output "Login to Azure using automation account service principal."
Connect-AzAccount `
    -ServicePrincipal `
    -Tenant $Connection.TenantId `
    -ApplicationId $Connection.ApplicationId `
    -CertificateThumbprint $Connection.CertificateThumbprint

# 设置当前订阅上下文
Write-Output "Setting context to subscription '$($Connection.SubscriptionId)'."
Set-AzContext -Subscription $Connection.SubscriptionId

# 获取自动化变量
$DatabaseName = Get-AutomationVariable -Name 'DatabaseName'
$AnalysisServerName = Get-AutomationVariable -Name 'AnalysisServerName'

# 输出日志信息
Write-Output "Initiating full refresh for database: $DatabaseName on server: $AnalysisServerName"

# 执行AS数据库全量刷新
Invoke-ProcessASDatabase `
    -DatabaseName $DatabaseName `
    -Server $AnalysisServerName `
    -RefreshType "Full" `
    -ServicePrincipal `
    -ApplicationId $Connection.ApplicationId `
    -TenantId $Connection.TenantId `
    -CertificateThumbprint $Connection.CertificateThumbprint

Write-Output "Refresh completed successfully."

最后还要检查这几点

  • 给RunAs服务主体分配Azure Analysis Services的管理员权限:在AS服务器的「访问控制(IAM)」里添加服务主体,角色选「Analysis Services管理员」,或者在表格模型里给服务主体分配「处理」权限的角色。
  • 确认自动化账户的模块列表里有Az.Accounts和SqlServer,如果版本过低,更新到最新兼容版本。

内容的提问来源于stack exchange,提问作者Darko Milic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:51:39