如何将 SQL Server 用户从一个 RDS for SQL Server 实例移动到另一个实例或从 RDS 移动到本地环境中?

2 分钟阅读
0

我想在两个 Microsoft SQL Server 实例的 Amazon 关系数据库 (Amazon RDS) 之间迁移 SQL Server 登录和密码。我还想将登录从本地环境迁走或迁移到本地环境。

解决方法

**注意:**有关复制主用户登录的说明,请参阅如何复制或克隆我的 RDS for SQL Server 用户登录权限?

将 SQL 服务器登录从一个 RDS for SQL Server 实例迁移到另一个实例

要将登录和密码迁移到新的目标 RDS 实例,请完成以下步骤:

  1. 创建源实例的快照
  2. 在目标实例上使用不同的名称来恢复快照
  3. 删除不需要的登录和数据库。

要将登录迁移到现有的目标 RDS 实例,请完成以下部分中的步骤。

将 RDS for SQL Server 登陆迁移到本地环境

**注意:**您必须按照以下解决方案手动输入密码。您无法在 RDS 上直接检索登录的加密密码。

选项 1

  1. 在任何用户数据库上创建 sp\ _help\ _revlogins 存储过程。有关存储过程脚本,请参见在 SQL Server 实例之间传输登录和密码中的方法 2(在 Microsoft 网站上)。
  2. 运行存储过程来编写源实例上的登录脚本。

**注意:**在主数据库中创建存储过程会导致以下错误:

"Msg 262, Level 14, State 18, Procedure sp_hexadecimal, Line 1 [Batch Start Line 5]CREATE PROCEDURE permission denied in database 'master'"

为了避免发生此错误,请在一个用户数据库上创建过程。在目标实例中创建登录后,重置密码,避免密码不匹配。

选项 2

要手动创建登录或使用 Microsoft SQL Server Management Studio (SSMS) 编写登录脚本,请完成以下步骤:

  1. 在 SSMS 中打开安全占位符,然后展开。
  2. 选择登录,然后按 F7 键。也可以从查看菜单中选择对象资源管理器详细信息
  3. 按住 Ctrl 键选择要迁移的登录
  4. 选择所需的登录后,选择(右键单击)屏幕。然后,选择编写登陆,打开一个新的查询窗口。
  5. 复制创建登录脚本。然后,替换密码,在目标实例上运行脚本。有关存储过程脚本,请参见在 SQL Server 实例之间传输登录和密码中的方法 1(在 Microsoft 网站上)。

将登录和密码从本地环境迁移到 RDS for SQL Server 上

在源服务器(本地)上,完成以下步骤:

  1. 为来自本地服务器的所有登录生成创建登录脚本。有关存储过程脚本,请参见在 SQL Server 实例之间传输登录和密码中的方法 2(在 Microsoft 网站上)。
  2. 创建存储过程后,打开一个新的 T-SQL 窗口。然后,使用以下命令运行存储过程。

**注意:**在运行脚本之前,按键盘上的 Ctrl+T 确保结果为文本格式。

EXEC [sp_help_revlogin]

此查询输出提供脚本,用于在目标服务器上创建具有原始 SID 和密码的登录。

在目标服务器上,完成以下步骤:

  1. 使用主用户账户连接到 RDS for SQL Server 实例。
  2. 运行您在源服务器**上(本地)**部分的步骤 2(sp\ _help\ _revlogin 输出)中生成的脚本。

**注意:**您无法授予系统管理员访问权限在 RDS 中登录。因此,当您将具有 sysadmin 权限的登录迁移到 RDS 时,不会被自动授予访问权限。您必须明确授予这些登录所需的权限。
有关 RDS 用户的可用权限列表,请参阅主用户账户权限

解决主账户权限问题

**找到您的主用户名 **

  1. 打开 RDS 控制台
  2. 在导航窗格中,选择数据库
  3. 选择您想要的主用户名 RDS 数据库实例。
  4. 打开配置选项卡。主要用户名列在可用性部分中。

重置主用户密码或恢复主用户的权限

有关重置主用户密码的信息,请参阅如何重置 Amazon RDS 数据库实例的主用户密码?

AWS 官方
AWS 官方已更新 1 年前