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

使用Invoke-Sqlcmd连接Azure SQL DB时提示“authentication不受支持”

问题场景

使用PowerShell的Invoke-Sqlcmd连接Azure SQL数据库时触发异常,执行代码如下:

$conn = 'Server=tcp:MyServer.database.windows.net,1433;Database=MyDB;Authentication=Active Directory Integrated;Encrypt=True;'
$sql = 'SELECT * FROM sys.databases'
Invoke-Sqlcmd -ConnectionString $conn -Query $sql 

抛出异常:

Invoke-Sqlcmd: Keyword not supported: 'authentication'.

经排查问题与System.Data.SqlClient和Microsoft.Data.SqlClient两个客户端库有关,且仅在VSCode中出现该问题,相同代码在PowerShell ISE中可正常运行。已安装.NET Core及最新.NET Framework,问题仍未解决。

解决方案

1. 更新SqlServer模块到最新版本

旧版SQLPS模块或早期SqlServer模块依赖不支持Authentication关键字的System.Data.SqlClient,新版SqlServer模块已切换为Microsoft.Data.SqlClient,可解决该问题:

  • 查看已安装的模块版本:
    Get-Module -ListAvailable SqlServer
    
  • 若版本较低,执行更新(需管理员权限):
    Install-Module -Name SqlServer -Force -AllowClobber
    

2. 在VSCode中显式加载新版SqlServer模块

VSCode可能默认加载旧版模块,需手动指定加载新版:

Import-Module SqlServer -DisableNameChecking

3. 改用参数化连接方式

避免在连接字符串中使用Authentication关键字,改用Invoke-Sqlcmd的独立参数传递:

Invoke-Sqlcmd -ServerInstance "MyServer.database.windows.net,1433" `
              -Database "MyDB" `
              -Authentication "ActiveDirectoryIntegrated" `
              -Query "SELECT * FROM sys.databases"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:52:12