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

已通过Connect-AzAccount(MFA)登录,如何连接Azure SQL Server?

解决Azure SQL Server的PowerShell认证连接问题

先排查核心权限问题

你已创建外部用户,但需确保该用户拥有目标数据库的访问权限,在SSMS或已连接的工具中执行以下SQL语句:

ALTER ROLE db_datareader ADD MEMBER [<你的账号>]
-- 若需写入权限,追加执行:ALTER ROLE db_datawriter ADD MEMBER [<你的账号>]
-- 若需管理权限,可使用:ALTER ROLE db_owner ADD MEMBER [<你的账号>]

方式一:使用AccessToken复用Connect-AzAccount会话

这是稳定性最高的实现方式,步骤如下:

  1. 获取正确的Azure SQL访问令牌:
    $token = (Get-AzAccessToken -ResourceUrl "https://database.windows.net/").Token
    
    注意:资源URL必须严格为https://database.windows.net/,不可拼写错误。
  2. 构建无认证参数的基础连接字符串:
    $connString = "Server=tcp:<你的SQL服务器名>.database.windows.net,1433;Database=<你的数据库名>;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
    
  3. 初始化连接对象并设置令牌:
    $sqlConn = New-Object System.Data.SqlClient.SqlConnection($connString)
    $sqlConn.AccessToken = $token
    try {
        $sqlConn.Open()
        Write-Host "连接成功"
        # 此处可添加SQL执行逻辑
    } catch {
        Write-Error "连接失败:$_"
    } finally {
        $sqlConn.Close()
    }
    
    若仍报<token-identified principal>登录失败,检查:
    • 创建的外部用户账号与Connect-AzAccount登录的账号完全一致(含UPN后缀)
    • SQL服务器防火墙规则允许当前机器IP访问

方式二:使用Active Directory Default认证(自动复用会话)

无需手动获取令牌,连接字符串会直接调用已有的Azure会话:

  1. 构建带认证参数的连接字符串:
    $connString = "Server=tcp:<你的SQL服务器名>.database.windows.net,1433;Database=<你的数据库名>;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication=Active Directory Default;"
    
  2. 直接发起连接:
    $sqlConn = New-Object System.Data.SqlClient.SqlConnection($connString)
    try {
        $sqlConn.Open()
        Write-Host "连接成功"
    } catch {
        Write-Error "连接失败:$_"
    } finally {
        $sqlConn.Close()
    }
    
    注:需确保PowerShell环境安装最新版SqlServer和Az.Accounts模块,可通过Update-Module SqlServer、Update-Module Az.Accounts更新。

原方式失败原因说明

  • Active Directory Integrated:该认证依赖Windows域环境或本地AD集成,在非域绑定机器、PowerShell非交互式环境中极易失效,不适合MFA账号使用。
  • AccessToken方式报错:大概率是未给外部用户分配数据库权限,或令牌资源URL拼写错误、账号匹配不一致导致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:55:44