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

Lesedauer: 3 Minute
0

Mit Amazon Relational Database Service (Amazon RDS) für Microsoft SQL Server read replica werden Änderungen auf der Master-Instance asynchron repliziert. Eine der Einschränkungen ist, dass die Logins nach der Erstellung der Instance nicht synchronisiert werden. Wie erstelle und synchronisiere ich die Logins, nachdem eine Instance erstellt wurde?

Auflösung

Führen Sie die folgenden Schritte aus, um die Logins für SQL Server und Windows auf der Master-Instance zu erstellen, zu bestätigen und zu synchronisieren:

SQL-Logins

SQL-Server-Logins werden von den Instanzen der Datenbank-Engine authentifiziert, und die Passwörter der Logins werden in der Master-Datenbank gespeichert. SQL-Logins können einem Datenbankbenutzer in einer Datenbank oder verschiedenen Benutzern in verschiedenen Datenbanken zugeordnet werden. Logins und Benutzer erzeugen eine eindeutige Statement-ID (SID). Das bedeutet, dass Sie bei der Synchronisierung von Logins auf Read Replica sicherstellen müssen, dass die Login-SID mit der SID auf der Master-Instance übereinstimmt.

SQL-Login auf der Master-Instance erstellen und mit der Read Replica synchronisieren

1.    Erstellen Sie auf der Master-Instance ein SQL Server-Login mit dem Namen „testlogin“.

USE [master]
GO
CREATE LOGIN [testlogin] WITH PASSWORD=N'Pa$$word';

2.    Bestätigen Sie, dass das Login„testlogin“ auf der Master-Instance erstellt wurde.

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

3.    Suchen Sie auf der Master-Instance die SID, die dem Login „testlogin“ zugeordnet ist.

select name, sid  FROM sys.sql_logins WHERE name = 'testlogin'
name                                         sid
-------------------------------------------------------------------------------
testlogin                      0xEBF23823BDEAED42823C76C8706F4B6B

4.    Erstellen Sie auf der Read Replica ein neues Login „testlogin“, das der SID der Master-Instance zugeordnet ist.

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

5.    Bestätigen Sie, dass die neue Login mit der passenden SID erstellt wurde.

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

Windows-Logins

Windows-authentifizierte SQL-Server-Logins sind Logins auf Instance-ebene, bei denen das Betriebssystem die Authentifizierung übernimmt. Windows-Logins können einem Benutzerkonto, einer lokalen Sicherheitsgruppe oder einem Domänenkonto zugewiesen werden.

Windows-Login auf der Master-Instance erstellen und Replikat lesen

Gehen Sie wie folgt vor, um ein Windows-Login auf der Master-Instance und dem Lese-Replikat zu erstellen:

1.    Erstellen Sie auf der Master-Instance ein Windows-Login '[SQLAD\ user1]'.

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

2.    Erstellen Sie auf dem Read Replica das Login '[SQLAD\ user1]' mit demselben Befehl. Im Gegensatz zu einem SQL-Login muss für Windows-authentifizierte SQL-Logins keine SID zugewiesen werden.

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

Auf Amazon RDS ist es nicht möglich, die von Microsoft bereitgestellten Speicherprozeduren „sp_help_revlogin“ und „sp_hexadecimal“ zur Erstellung von Logins zu verwenden. Dies liegt daran, dass Amazon RDS keine erhöhten Berechtigungen für eine Master-Datenbank bietet.