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

如何用PowerShell列出Azure Analysis Services数据库/模型及报错解决

获取Azure Analysis Services数据库列表的PowerShell方案及重定向URI错误解决

一、替代方法:使用Az模块执行XMLA查询获取数据库列表

Get-AzAnalysisServicesServer仅返回服务器级元数据,无法直接获取数据库。可通过Invoke-AzAnalysisServicesCommand执行XMLA查询来获取数据库列表,无需依赖额外程序集:

  1. 确保安装Az.AnalysisServices模块:
Install-Module -Name Az.AnalysisServices -Force -AllowClobber
  1. 示例脚本:
# 登录Azure账号
Connect-AzAccount

# 定义Azure AS服务器地址(格式:asazure://<区域>.asazure.windows.net/<服务器名>)
$asServer = "asazure://eastus.asazure.windows.net/your-as-server-name"

# 用于查询数据库列表的XMLA语句
$xmlaQuery = @"
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
    <RequestType>DBSCHEMA_CATALOGS</RequestType>
    <Restrictions>
        <RestrictionList/>
    </Restrictions>
    <Properties/>
</Discover>
"@

# 执行查询并获取结果
$dbResult = Invoke-AzAnalysisServicesCommand -Instance $asServer -Query $xmlaQuery

# 提取并输出数据库名称
$dbResult.Catalogs.Catalog_Name

二、解决Microsoft.AnalysisServices程序集的重定向URI错误

你遇到的AADSTS50011错误是因为默认程序集使用的内置Azure AD应用ID不在你的订阅中,且重定向URI未匹配。需创建自定义Azure AD应用注册来解决:

步骤1:创建Azure AD应用注册

  1. 登录Azure门户,进入Azure Active Directory → 应用注册 → 新注册
  2. 设置应用名称,选择账户类型(推荐“任何组织目录中的帐户”)
  3. 重定向URI选择公共客户端/本机(移动&桌面),填写urn:ietf:wg:oauth:2.0:oob
  4. 注册后记录应用程序(客户端)ID和目录(租户)ID

步骤2:分配权限并授予同意

  1. 进入刚创建的应用注册 → API权限 → 添加权限
  2. 搜索并选择Azure Analysis Services,添加所需权限(如“读取模型”)
  3. 点击授予管理员同意(需Azure AD管理员权限)

步骤3:修改PowerShell脚本使用自定义应用

# 加载Analysis Services程序集(路径根据SQL Server SDK版本调整,160对应SQL Server 2022)
Add-Type -Path "C:\Program Files\Microsoft SQL Server\160\SDK\Assemblies\Microsoft.AnalysisServices.Core.dll"
Add-Type -Path "C:\Program Files\Microsoft SQL Server\160\SDK\Assemblies\Microsoft.AnalysisServices.Tabular.dll"

$serverName = "asazure://eastus.asazure.windows.net/your-as-server-name"
$tenantId = "你的租户ID"
$clientId = "你的应用客户端ID"

$server = New-Object Microsoft.AnalysisServices.Tabular.Server

# 使用自定义应用的连接字符串(交互式登录)
$connString = "Provider=MSOLAP;Data Source=$serverName;TenantId=$tenantId;ClientId=$clientId;Authentication=ActiveDirectoryInteractive"
$server.Connect($connString)

# 获取并输出数据库列表
$server.Databases | Select-Object Name, ID

# 断开连接
$server.Disconnect()

如果需要自动化无交互执行,可使用服务主体认证:

  1. 在应用注册中创建客户端密钥并记录
  2. 将连接字符串修改为:
$connString = "Provider=MSOLAP;Data Source=$serverName;TenantId=$tenantId;ClientId=$clientId;Password=你的客户端密钥;Authentication=ActiveDirectoryServicePrincipal"
  1. 在Azure AS服务器的管理员设置中,添加该服务主体为管理员

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:12:49