如何在 Amazon RDS for SQL Server 只读副本上创建并同步 SQL 和 Windows 登录名?

1 分钟阅读
0

Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 只读副本会以异步方式将更改复制到主实例。当我创建实例时,我的登录名未同步。我想在创建实例时创建并同步登录名。

解决方法

在主实例上创建 SQL 登录名,并将该登录名与只读副本同步

数据库引擎实例会对 SQL Server 登录名进行身份验证,并将登录密码存储在主数据库中。您可以将 SQL 登录名映射到一个数据库中的某个数据库用户,也可以将其映射到不同数据库中的不同用户。登录名和用户会生成一个唯一的语句 ID (SID)。在只读副本上同步登录名时,请确保其登录名 SID 与主实例上的 SID 相匹配。

要在主实例上创建 SQL 登录名并将登录名与只读副本同步,请完成以下步骤:

  1. 在主实例上运行以下查询,以创建名为 testlogin 的 SQL Server 登录名:

    USE [master]  
    GO  
    CREATE LOGIN [testlogin] WITH PASSWORD=N'Pa$$word';
  2. 在主实例上运行以下查询,以确认您已在主实例上创建了 testlogin

    SELECT name FROM sys.sql_logins WHERE name = 'testlogin';
  3. 在主实例上运行以下查询,以查找映射到 testlogin 的 SID:

    SELECT name, sid  FROM sys.sql_logins WHERE name = 'testlogin';

    输出示例:

    name                           sid  
    -------------------------------------------------------------------------------  
    testlogin                      0xEBF23823BDEAED42823C76C8706F4B6B
  4. 在只读副本上运行以下查询,以创建一个名为 testlogin 的新登录名,该登录名将映射到主实例的 SID:

    CREATE Login testlogin  WITH password = N'Pa$$word', SID = 0xEBF23823BDEAED42823C76C8706F4B6B;
  5. 在只读副本上运行以下查询,以确认您使用与主实例相同的 SID 创建了新的登录名:

    SELECT name, sid  FROM sys.sql_logins WHERE name = 'testlogin';

在主实例和只读副本上创建 Windows 登录名

Windows 身份验证的 SQL Server 登录名是实例级登录名,其身份验证由操作系统 (OS) 管理。您可以将 Windows 登录名映射到用户的 AWS 账户、本地安全组或域账户。

要在主实例和只读副本上创建 Windows 登录名,请完成以下步骤:

  1. 在主实例上运行以下查询,以创建名为 SQLAD\user1 的 Windows 登录名:

    CREATE LOGIN [SQLAD\user1] FROM WINDOWS  
    WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]  
    GO
  2. 在只读副本上运行以下命令,以创建名为 SQLAD\user1 的登录名:

    CREATE LOGIN [SQLAD\user1] FROM WINDOWS  
    WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]  
    GO

**注意:**Amazon RDS 不提供主数据库的高级权限。因此,您无法使用 Microsoft 提供的 sp_help_revloginsp_hexadecimal 存储过程在 Amazon RDS 中生成登录名。

AWS 官方
AWS 官方已更新 2 个月前