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

通过PowerShell创建Azure SQL服务器登录名时连接失败

Azure Pipeline中Add-SqlLogin连接Azure SQL Server失败

我在Azure Pipeline的AzurePowerShell@5任务里执行两段PowerShell脚本:第一段创建Azure SQL数据库没问题,第二段创建SQL登录名时直接报错**"Failed to connect to server"**。

两段脚本如下:

创建Azure SQL数据库(执行成功)

$database = New-AzSqlDatabase  -ResourceGroupName $resourceGroupName `
    -ServerName $serverName `
    -DatabaseName $dbName `
    -RequestedServiceObjectiveName $databaseTier `
    -BackupStorageRedundancy $backupPolicy

创建SQL登录名(执行失败)

Add-SqlLogin -ServerInstance $serverName -LoginName $loginName -LoginType 'SqlLogin' -LoginPSCredential $credential -Enable -GrantConnectSql -ConnectionTimeout 90

已知情况

  • 用SSMS能正常连接目标SQL服务器和数据库,手动创建该登录名操作可行
  • 本地运行第二段脚本时,同样报连接失败的错,未出现权限不足的提示

排查和解决建议

1. 修正ServerInstance参数格式

Azure SQL Server的实例名必须使用完整FQDN格式:{serverName}.database.windows.net,如果你的$serverName仅传入短名称,会导致无法正确解析服务器地址。修改脚本如下:

$fullServerInstance = "$serverName.database.windows.net"
Add-SqlLogin -ServerInstance $fullServerInstance -LoginName $loginName -LoginType 'SqlLogin' -LoginPSCredential $credential -Enable -GrantConnectSql -ConnectionTimeout 90

2. 检查SQL Server防火墙规则

  • 若使用微软托管代理,需在Azure门户的SQL服务器防火墙设置中勾选允许Azure服务和资源访问此服务器
  • 若使用自托管代理,要将代理所在机器的公网IP添加到SQL服务器的防火墙白名单

3. 确认SqlServer模块版本兼容性

Add-SqlLogin属于SqlServer模块,旧版本可能不支持Azure SQL Server。可在脚本开头指定安装兼容版本:

Install-Module -Name SqlServer -RequiredVersion 22.1.1 -Force -AllowClobber
Import-Module SqlServer -RequiredVersion 22.1.1

4. 换用Az.Sql模块创建登录名

如果上述方法无效,可直接使用Az.Sql模块的命令绕开直接连接的问题:

New-AzSqlServerLogin -ResourceGroupName $resourceGroupName -ServerName $serverName -LoginName $loginName -Password $credential.GetNetworkCredential().Password

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:00:25