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 中產生登入。