使用PowerShell备份Azure SQL Database遇登录失败:无法打开指定服务器
问题分析与解决方案
错误根源
你遇到的“无法打开登录请求的服务器‘domainname.com’,登录失败”错误,核心原因是Azure SQL服务器的本地管理员账户格式使用错误:
- Azure SQL的本地服务器管理员是不带域名后缀的纯用户名(比如
username),而非username@domainname.com这种Azure AD账户格式。 - 你传入的
$UserName是username@domainname.com,脚本会把@domainname.com识别为要登录的服务器名,导致登录目标错误。
解决步骤
确认正确的管理员用户名
登录Azure门户,找到你的SQL服务器,进入「设置」→「服务器管理员」,查看纯用户名(无域名后缀)。修正脚本中的用户名参数
将$UserName的值改为纯用户名,去掉@domainname.com后缀。额外排查点
- 检查SQL服务器防火墙规则,确保运行脚本的机器IP已被允许访问;
- 修正脚本中的笔误:
$STorageUri大小写不统一,改为$StorageUri避免变量未定义错误; - 确认存储账户容器已存在,存储URI格式正确。
修正后的脚本示例
$GetStorageAccount = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName $GetStorageAccountKey = (Get-AzStorageAccountKey -Name $StorageAccountName -ResourceGroupName $ResourceGroupName).Value[0] $GetStorageAccount.Context # 修正$UserName为纯用户名,例如从"username@domainname.com"改为"username" $SQLBackup = New-AzSqlDatabaseExport -ResourceGroupName $ResourceGroupName -DatabaseName $DatabaseName -ServerName $ServerName ` -StorageKeyType StorageAccessKey -StorageKey $GetStorageAccountKey ` -StorageUri "$($StorageUri)/$($ContainerName)/$($DBBackupName)" ` -AdministratorLogin $UserName -AdministratorLoginPassword (ConvertTo-SecureString -String $Password -AsPlainText -Force) do{ $GetSQLBackupStatus = Get-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -DatabaseName $DatabaseName -ServerName $ServerName | Where-Object {$_.State -eq "InProgress"} $Progress = if($GetSQLBackupStatus.State -eq "InProgress") { 1 } else { 0 } Write-Host -ForegroundColor Green "备份进程仍在运行.." if($GetSQLBackupStatus){ Write-Host -ForegroundColor Magenta "备份已完成 $($GetSQLBackupStatus.PercentComplete)%" } }while($Progress -eq 1)
注:如果需要使用Azure AD账户执行导出,需先在SQL服务器上配置Azure AD管理员,然后使用
-UseActiveDirectoryAuthentication参数(需确保Az.Sql模块版本支持该参数)。
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

