Synchronisation des utilisateurs et des objets de base de données avec un réplica en lecture SQL Server - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Synchronisation des utilisateurs et des objets de base de données avec un réplica en lecture SQL Server

Tous les identifiants, rôles de serveur personnalisés, tâches d'agent SQL ou autres objets de niveau serveur qui existent dans l'instance de base de données principale au moment de la création d'un réplica en lecture sont censés être présents dans le réplica en lecture nouvellement créé. Toutefois, les objets de niveau serveur qui sont créés dans l'instance de base de données principale après la création du réplica en lecture ne sont pas répliqués automatiquement. Vous devez les créer manuellement dans le réplica en lecture.

Les utilisateurs de base de données sont automatiquement répliqués à partir de l'instance de base de données principale dans le réplica en lecture. La base de données du réplica en lecture étant en mode lecture seule, l'identifiant de sécurité (SID) de l'utilisateur de la base de données ne peut pas être mis à jour dans la base de données. Par conséquent, lors de la création de connexions SQL dans le réplica en lecture, il est essentiel de s'assurer que le SID de cette connexion correspond au SID de la connexion SQL correspondante dans l'instance de base de données principale. Si vous ne synchronisez pas les SID des connexions SQL, ils ne pourront pas accéder à la base de données dans le réplica en lecture. Les connexions authentifiées Windows Active Directory (AD) ne rencontrent pas ce problème, car SQL Server obtient le SID auprès d'Active Directory.

Pour synchroniser une connexion SQL à partir de l'instance de base de données principale vers le réplica en lecture
  1. Connectez-vous à l'instance de base de données principale.

  2. Créez une nouvelle connexion SQL dans l'instance de base de données principale.

    USE [master] GO CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD';
    Note

    Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.

  3. Créez un nouvel utilisateur de base de données pour la connexion SQL dans la base de données.

    USE [REPLACE WITH YOUR DB NAME] GO CREATE USER TestLogin1 FOR LOGIN TestLogin1; GO
  4. Vérifiez le SID de la connexion SQL nouvellement créée dans l'instance de base de données principale.

    SELECT name, sid FROM sys.server_principals WHERE name = TestLogin1;
  5. Connectez-vous au réplica en lecture. Créez la nouvelle connexion SQL.

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=[REPLACE WITH sid FROM STEP #4];
Comme alternative, si vous avez accès à la base de données de réplica en lecture, vous pouvez corriger l'utilisateur orphelin comme suit :
  1. Connectez-vous au réplica en lecture.

  2. Identifiez les utilisateurs orphelins dans la base de données.

    USE [REPLACE WITH YOUR DB NAME] GO EXEC sp_change_users_login 'Report'; GO
  3. Créez une nouvelle connexion SQL pour l'utilisateur de la base de données orphelin.

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=[REPLACE WITH sid FROM STEP #2];

    Exemple :

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'TestPa$$word#1', SID=[0x1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P];
    Note

    Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.