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

如何使用Azure Automation将Azure SQL数据库复制到不同服务器或订阅

Azure SQL跨服务器复制凭据报错解决方案

1 明确凭据字段填写规则

  • Azure自动化账户连接Azure SQL服务器时,凭据的用户名字段必须填写服务器级登录名,也就是你创建的Sana1,不能填数据库级用户名sanauser,场景2的报错本质是填写字段不符合要求导致的身份验证失败。
  • 填写登录名时注意不要携带服务器后缀,不需要加@xxxx.database.windows.net,仅填纯登录名Sana1即可。

2 校验登录名与用户的配置正确性

你已经同步了登录名SID,还需要确认以下配置:

  • 源服务器上的Sana1登录名需要分配源数据库的db_owner或者db_backupoperator权限,确保可读取数据库复制所需的全部数据
  • 目标服务器上的Sana1登录名需要完成和数据库用户的映射,并且分配目标库的db_owner权限,对应执行SQL命令如下:
-- 在目标服务器master库执行
CREATE USER sanauser FROM LOGIN Sana1;
-- 在目标服务器的目标复制库执行
ALTER ROLE db_owner ADD MEMBER sanauser;
  • 校验源和目标服务器的登录名SID一致性,两端master库分别执行以下命令,返回的SID必须完全相同:
SELECT sid FROM sys.sql_logins WHERE name = 'Sana1';

如果SID不一致,删除目标服务器的Sana1登录名,重新用源端SID创建即可。

3 排查自动化账户关联配置

  • 确认Azure SQL服务器的防火墙规则已允许自动化账户的出站IP访问,同时开启「允许Azure服务和资源访问此服务器」开关
  • 确认自动化账户使用的Az.Sql模块版本≥3.8.0,低版本模块存在跨服务器复制的身份验证兼容bug
  • 确认凭据内填写的密码和Sana1登录名的密码完全匹配,没有多余空格、特殊字符未转义的问题

4 临时规避方案

如果自动化账户方式始终报错,可以直接在本地PowerShell执行命令完成复制,替换对应参数即可:

$sourceServer = "源服务器名"
$sourceDB = "源数据库名"
$targetServer = "目标服务器名"
$targetDB = "目标数据库名"
$cred = Get-Credential # 弹窗输入Sana1和对应密码
New-AzSqlDatabaseCopy -ResourceGroupName "源资源组名" `
    -ServerName $sourceServer `
    -DatabaseName $sourceDB `
    -CopyResourceGroupName "目标资源组名" `
    -CopyServerName $targetServer `
    -CopyDatabaseName $targetDB `
    -Credential $cred

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:45:04