跳至內容

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