Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 僅供讀取複本會以非同步方式複寫在主執行個體上所做的變更。其中一個限制是在執行個體建立後登入不會同步。如何在建立執行個體後建立和同步登入?
解決方案
請使用下列步驟在主執行個體上建立、確認和同步 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 不會在主資料庫上提供提升的權限。