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

如何将Azure SQL登录名(含SID、密码)跨订阅迁移至另一服务器master库

Azure SQL 跨订阅迁移登录名(含SID、密码)操作指引

以下方案可直接实现将SQL身份验证的登录名完整迁移至另一订阅的Azure SQL服务器master库,全程无需依赖跨订阅权限关联,只要分别获取两端服务器的admin访问权限即可操作:

1. 源端生成带SID和密码哈希的创建脚本

使用源Azure SQL服务器的admin账号连接其master库,执行如下查询,直接获取所有自定义SQL登录的创建语句:

SELECT 
    'CREATE LOGIN [' + name + '] 
    WITH PASSWORD = ' + CONVERT(VARCHAR(MAX), LOGINPROPERTY(name, 'PasswordHash'), 1) + ' HASHED,
    SID = ' + CONVERT(VARCHAR(MAX), sid, 1) + ',
    CHECK_EXPIRATION = OFF, 
    CHECK_POLICY = OFF;' AS create_login_script
FROM sys.sql_logins
WHERE type = 'S'
AND name NOT IN (
    'sa', '##MS_SQLResourceSigningCertificate##', 
    '##MS_SQLReplicationSigningCertificate##', 
    '##MS_SQLAuthenticatorCertificate##', 
    '##MS_PolicySigningCertificate##', 
    '##MS_SmoExtendedSigningCertificate##', 
    '##MS_PolicyTsqlExecutionLogin##'
)

说明:若你需要保留原登录名的密码过期、密码策略配置,修改查询中对应参数的取值即可。

2. 目标端执行脚本完成迁移

使用目标Azure SQL服务器的admin账号连接其master库,直接粘贴上一步导出的所有创建语句执行即可。
注意:无需对两个订阅做任何信任配置或关联操作,只要能正常访问两端服务器即可执行。

3. 迁移结果验证

在目标端master库执行如下查询,比对返回的登录名、SID和源端数据是否一致:

SELECT name, sid FROM sys.sql_logins WHERE type = 'S'

也可直接使用迁移后的登录名尝试登录目标Azure SQL服务器,验证密码是否正常生效。

常见问题处理

  • 仅SQL身份验证的登录名需要迁移SID和密码哈希,Azure AD身份验证的登录名直接在目标端使用相同AD实体重新创建即可,无需匹配SID
  • 若迁移后对应数据库内的用户出现孤立问题,在对应业务库中执行如下命令修复即可:
ALTER USER [对应的数据库用户名] WITH LOGIN [迁移的登录名]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:18:02