Wie erstelle und synchronisiere ich SQL- und Windows-Logins auf einer Amazon RDS für SQL Server-Read Replica?

Lesedauer: 3 Minute
0

Read Replicas von Amazon Relational Database Service (Amazon RDS) für Microsoft SQL Server replizieren asynchron Änderungen an der primären Instance. Meine Anmeldungen werden nicht synchronisiert, wenn ich eine Instance erstelle. Ich möchte die Logins erstellen und synchronisieren, wenn ich eine Instance erstelle.

Lösung

Ein SQL-Login auf der primären Instance erstellen und die Anmeldung mit einer Read Replica synchronisieren

Datenbank-Engine-Instances authentifizieren SQL-Server-Logins und speichern die Anmeldepasswörter in der Primärdatenbank. Du kannst SQL-Logins einem Datenbankbenutzer in einer Datenbank oder verschiedenen Benutzern in verschiedenen Datenbanken zuordnen. Logins und Benutzer generieren eine eindeutige Anweisungs-ID (SID). Wenn du Logins auf der Read Replica synchronisierst, stelle sicher, dass die Anmelde-SID mit der SID auf der primären Instance übereinstimmt.

Gehe wie folgt vor, um ein SQL-Login auf der primären Instance zu erstellen und das Login mit einer Read Replica zu synchronisieren:

  1. Führe die folgende Abfrage auf der primären Instance aus, um ein SQL Server-Login mit dem Namen testlogin zu erstellen:

    USE [master]  
    GO  
    CREATE LOGIN [testlogin] WITH PASSWORD=N'Pa$$word';
  2. Führe die folgende Abfrage auf der primären Instance aus, um dich zu vergewissern, dass du testlogin auf der primären Instance erstellt hast:

    SELECT name FROM sys.sql_logins WHERE name = 'testlogin';
  3. Führe die folgende Abfrage auf der primären Instance aus, um die SID zu finden, die testlogin zugeordnet ist:

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

    Beispielausgabe:

    name                           sid  
    -------------------------------------------------------------------------------  
    testlogin                      0xEBF23823BDEAED42823C76C8706F4B6B
  4. Führe die folgende Abfrage für die Read Replica aus, um ein neues Login mit dem Namen testlogin zu erstellen, das der SID der primären Instance zugeordnet ist:

    CREATE Login testlogin  WITH password = N'Pa$$word', SID = 0xEBF23823BDEAED42823C76C8706F4B6B;
  5. Führe die folgende Abfrage für die Read Replica aus, um dich zu vergewissern, dass du das neue Login mit derselben SID wie die primäre Instance erstellt hast:

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

Erstellen eines Windows-Logins auf einer primären Instance und auf der Read Replica

Bei Windows-authentifizierten SQL-Server-Logins handelt es sich um Logins auf Instance-Ebene, bei denen das Betriebssystem (OS) die Authentifizierung verwaltet. Du kannst Windows-Logins dem AWS-Konto eines Benutzers, einer lokalen Sicherheitsgruppe oder einem Domain-Konto zuordnen.

Gehe wie folgt vor, um ein Windows-Login auf der primären Instance und auf der Read Replica zu erstellen:

  1. Führe die folgende Abfrage auf der primären Instance aus, um ein Windows-Login mit dem Namen SQLAD\user1 zu erstellen:

    CREATE LOGIN [SQLAD\user1] FROM WINDOWS  
    WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]  
    GO
  2. Führe den folgenden Befehl auf der Read Replica aus, um ein Login mit dem Namen SQLAD\user1 zu erstellen:

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

Hinweis: Amazon RDS bietet keine allgemeinen Berechtigungen für eine Primärdatenbank. Du kannst also nicht die von Microsoft bereitgestellten Speicherverfahren sp_help_revlogin oder sp_hexadecimal verwenden, um Logins in Amazon RDS zu generieren.