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

1 分钟阅读
0

适用于 Microsoft SQL Server 的 Amazon Relational Database Service(Amazon RDS)只读副本异步复制在主实例上所做的更改。限制之一是实例创建后登录信息不同步。创建实例后如何创建和同步登录信息?

解决方法

使用以下步骤在主实例上创建、确认和同步 SQL Server 和 Windows 登录信息:

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.    在只读副本上,创建一个映射到主实例的 SID 的新登录信息“testlogin”。

CREATE Login testlogin  WITH password = ' Pa$$word', SID = 0xEBF23823BDEAED42823C76C8706F4B6B

5.    确认使用匹配的 SID 创建了新登录信息。

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

Windows 登录信息

经过 Windows 身份验证的 SQL Server 登录信息是实例级登录信息,操作系统负责身份验证。Windows 登录信息可以映射到用户账户、本地安全组或域账户。

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

要在主实例和只读副本上创建 Windows 登录信息,请执行以下操作:

1.    在主实例上,创建 Windows 登录信息“[SQLAD\user1]”。

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

2.    在只读副本上,使用相同的命令创建登录信息“[SQLAD\user1]”。与 SQL 登录信息不同,经 Windows 身份验证的 SQL 登录信息不需要映射 SID。

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 不提供主数据库的提升权限。


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