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

PowerShell使用MFA认证连接Azure SQL Server报错求解

问题原因
  • 你遇到的报错本质是当前安装的SqlServer模块版本过低,其依赖的底层System.Data.SqlClient驱动不支持Active Directory Interactive(带MFA的交互认证)方式,导致找不到对应认证提供程序。
解决方案

方案1:升级SqlServer模块(适配手动运行场景,可弹出MFA验证窗)

  1. 首先以管理员权限启动PowerShell,执行以下命令查看当前已安装的SqlServer模块版本:
    Get-Module SqlServer -ListAvailable
    若版本低于21.1.18256,执行以下命令升级到最新版:
    Install-Module -Name SqlServer -Force -AllowClobber
  2. 升级完成后使用如下代码连接数据库,运行时会自动弹出MFA验证窗口:
# 强制加载指定最低版本的SqlServer模块,避免调用到旧版本
Import-Module SqlServer -MinimumVersion 22.0.49

$serverName = "<Azure SQL服务器名>.database.windows.net"
$databaseName = "<数据库名>"
# 若你的账号属于多租户,可在连接字符串后补充TenantId=<你的租户ID>参数
$connStr = "Server=$serverName;Database=$databaseName;Authentication=Active Directory Interactive;"

$database = Get-SqlDatabase -ConnectionString $connStr
# 验证连接是否正常,列出列主密钥
Get-SqlColumnMasterKey -InputObject $database

方案2:结合Az模块获取AccessToken(适配自动化场景,无需交互弹窗)

如果你的脚本需要自动化运行,可通过Azure官方Az模块获取访问令牌直接认证,无需触发MFA交互:

# 首次运行需先安装Az.Sql模块:Install-Module Az.Sql -Force
Import-Module Az.Sql

# 登录Azure账号,可添加-Tenant参数指定租户ID
Connect-AzAccount

# 获取Azure SQL的访问令牌
$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
$serverName = "<Azure SQL服务器名>.database.windows.net"
$databaseName = "<数据库名>"
$connStr = "Server=$serverName;Database=$databaseName;"

$database = Get-SqlDatabase -ConnectionString $connStr -AccessToken $accessToken
Get-SqlColumnMasterKey -InputObject $database

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:45:06