Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 只读副本会以异步方式将更改复制到主实例。当我创建实例时,我的登录名未同步。我想在创建实例时创建并同步登录名。
解决方法
在主实例上创建 SQL 登录名,并将该登录名与只读副本同步
数据库引擎实例会对 SQL Server 登录名进行身份验证,并将登录密码存储在主数据库中。您可以将 SQL 登录名映射到一个数据库中的某个数据库用户,也可以将其映射到不同数据库中的不同用户。登录名和用户会生成一个唯一的语句 ID (SID)。在只读副本上同步登录名时,请确保其登录名 SID 与主实例上的 SID 相匹配。
要在主实例上创建 SQL 登录名并将登录名与只读副本同步,请完成以下步骤:
-
在主实例上运行以下查询,以创建名为 testlogin 的 SQL Server 登录名:
USE [master]
GO
CREATE LOGIN [testlogin] WITH PASSWORD=N'Pa$$word';
-
在主实例上运行以下查询,以确认您已在主实例上创建了 testlogin:
SELECT name FROM sys.sql_logins WHERE name = 'testlogin';
-
在主实例上运行以下查询,以查找映射到 testlogin 的 SID:
SELECT name, sid FROM sys.sql_logins WHERE name = 'testlogin';
输出示例:
name sid
-------------------------------------------------------------------------------
testlogin 0xEBF23823BDEAED42823C76C8706F4B6B
-
在只读副本上运行以下查询,以创建一个名为 testlogin 的新登录名,该登录名将映射到主实例的 SID:
CREATE Login testlogin WITH password = N'Pa$$word', SID = 0xEBF23823BDEAED42823C76C8706F4B6B;
-
在只读副本上运行以下查询,以确认您使用与主实例相同的 SID 创建了新的登录名:
SELECT name, sid FROM sys.sql_logins WHERE name = 'testlogin';
在主实例和只读副本上创建 Windows 登录名
Windows 身份验证的 SQL Server 登录名是实例级登录名,其身份验证由操作系统 (OS) 管理。您可以将 Windows 登录名映射到用户的 AWS 账户、本地安全组或域账户。
要在主实例和只读副本上创建 Windows 登录名,请完成以下步骤:
-
在主实例上运行以下查询,以创建名为 SQLAD\user1 的 Windows 登录名:
CREATE LOGIN [SQLAD\user1] FROM WINDOWS
WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
GO
-
在只读副本上运行以下命令,以创建名为 SQLAD\user1 的登录名:
CREATE LOGIN [SQLAD\user1] FROM WINDOWS
WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
GO
**注意:**Amazon RDS 不提供主数据库的高级权限。因此,您无法使用 Microsoft 提供的 sp_help_revlogin 或 sp_hexadecimal 存储过程在 Amazon RDS 中生成登录名。