

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.

# Utilisation des réplicas en lecture pour Microsoft SQL Server dans Amazon RDS
<a name="SQLServer.ReadReplicas"></a>

Vous utilisez généralement des réplicas en lecture pour configurer la réplication entre instances de base de données Amazon RDS. Pour obtenir des informations générales sur les réplicas en lecture, consultez [Utilisation des réplicas en lecture d'instance de base de données](USER_ReadRepl.md). 

Cette section contient des informations spécifiques sur l’utilisation des réplicas en lecture sur Amazon RDS for SQL Server.
+ [Synchronisation des utilisateurs et des objets de base de données avec un réplica en lecture SQL Server](SQLServer.ReadReplicas.ObjectSynchronization.md)
+ [Résolution d'un problème de réplica en lecture SQL Server](SQLServer.ReadReplicas.Troubleshooting.md)

## Configuration des réplicas en lecture pour SQL Server
<a name="SQLServer.ReadReplicas.Configuration"></a>

Avant qu'une instance de base de données puisse être utilisée comme instance source pour la réplication, vous devez activer les sauvegardes automatiques sur l'instance de base de données source. Pour cela, vous devez définir la période de rétention des sauvegardes sur une valeur autre que 0. Pour définir ce type de déploiement, l'activation des sauvegardes automatiques doit également être effective.

La création d'un réplica en lecture SQL Server ne nécessite pas d'arrêt de l'instance de base de données principale. Amazon RDS définit les paramètres et autorisations nécessaires pour l'instance de base de données source et le réplica en lecture sans interruption de service. Un instantané de l'instance de base de données source est pris, et devient le réplica en lecture. Aucune interruption de service ne se produit lorsque vous supprimez un réplica en lecture. 

Vous pouvez créer jusqu'à 15 réplicas en lecture à partir d'une seule instance de base de données source. Pour que la réplication fonctionne efficacement, nous vous recommandons de configurer chaque réplica en lecture avec la même quantité de ressources de calcul et de stockage que l'instance de base de données source. Si vous mettez à l'échelle l'instance de base de données source, faites-le également pour les réplicas en lecture.

La version du moteur de base de données SQL Server de l'instance de base de données source et de tous ses réplicas en lecture doit être identique. Amazon RDS met à niveau la base de données principale immédiatement après la mise à niveau des réplicas en lecture, indépendamment de la fenêtre de maintenance. Pour plus d’informations sur la mise à niveau de la version du moteur de base de données, consultez [Mises à niveau du moteur de base de données Microsoft SQL Server](USER_UpgradeDBInstance.SQLServer.md).

Pour qu'un réplica en lecture reçoive et applique les modifications de la source, il doit disposer de ressources de calcul et de stockage suffisantes. Si un réplica en lecture atteint sa capacité en ce qui concerne les ressources de calcul, de réseau ou de stockage, il arrête de recevoir ou d'appliquer les modifications provenant de sa source. Vous pouvez modifier les ressources de stockage et d'UC d'un réplica en lecture indépendamment de sa source et d'autres réplicas en lecture. 

Pour en savoir plus sur la création d’un réplica en lecture, consultez [Création d’un réplica en lecture](USER_ReadRepl.Create.md).

## Limites des réplicas en lecture avec SQL Server
<a name="SQLServer.ReadReplicas.Limitations"></a>

Les limites suivantes s'appliquent aux réplicas en lecture SQL Server sur Amazon RDS :
+ Les réplicas en lecture sont uniquement disponibles sur le moteur SQL Server Enterprise Edition (EE).
+ Les réplicas en lecture sont disponibles pour SQL Server versions 2016–2022.
+ Vous pouvez créer jusqu'à 15 réplicas en lecture à partir d'une seule instance de base de données source. La réplication peut être retardée lorsque votre instance de base de données source possède plus de 5 réplicas en lecture.
+ Les réplicas en lecture sont uniquement disponibles pour les instances de base de données exécutées sur les classes d'instances de base de données avec quatre vCPU ou plus.
+ Un réplica en lecture prend en charge jusqu’à 100 bases de données en fonction du type de classe d’instance et du mode de disponibilité. Vous devez créer des bases de données sur l’instance de base de données source pour les répliquer automatiquement dans les réplicas en lecture. Vous ne pouvez pas choisir des bases de données à répliquer en particulier. Pour plus d’informations, consultez [Limites propres aux instances de bases de données Microsoft SQL Server](CHAP_SQLServer.md#SQLServer.Concepts.General.FeatureSupport.Limits).
+ Vous ne pouvez pas supprimer une base de données à partir d’un réplica en lecture. Pour supprimer une base de données, supprimez-la de l’instance de base de données source avec la procédure stockée `rds_drop_database`. Pour plus d’informations, consultez [Suppression d’une base de données dans une instance de base de données Amazon RDS for Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md).
+ Si l’instance de base de données source utilise Transparent Data Encryption (TDE) pour le chiffrement des données, le réplica en lecture configure également le TDE automatiquement.

  Si l’instance de base de données source utilise une clé KMS pour chiffrer les données, les réplicas en lecture dans la même région utilisent la même clé KMS. Pour les réplicas en lecture entre régions, vous devez spécifier une clé KMS provenant de la région du réplica en lecture lors de la création du réplica en lecture. Vous ne pouvez pas modifier la clé KMS pour un réplica en lecture.
+ Les réplicas en lecture ont le même fuseau horaire et le même classement que l’instance de base de données source, quelle que soit la zone de disponibilité dans laquelle ils ont été créés.
+ Les éléments suivants ne sont pas pris en charge sur Amazon RDS for SQL Server :
  + Rétention des sauvegardes des réplicas en lecture
  + Reprise ponctuelle à partir de réplicas en lecture
  + Instantanés manuels de réplicas en lecture
  + Réplicas en lecture multi-AZ
  + Création de réplicas en lecture à partir de réplicas en lecture
  + Synchronisation des connexions utilisateur pour lire les réplicas en lecture
+ Amazon RDS for SQL Server n’intervient pas pour atténuer un retard de réplica élevé entre une instance de base de données source et ses réplicas en lecture. Assurez-vous que l'instance de base de données et ses réplicas en lecture ont une taille appropriée, en termes de puissance de calcul et de stockage, afin de pouvoir répondre aux besoins de la charge opérationnelle.
+ Vous pouvez opérer une réplication entre les régions AWS GovCloud (USA-East) et AWS GovCloud (US-West), mais pas vers l'intérieur ou l'extérieur d'AWS GovCloud (US) Regions.

## Considérations relatives aux options pour les réplicas RDS for SQL Server
<a name="SQLServer.ReadReplicas.limitations.options"></a>

Avant de créer un réplica RDS for SQL Server, tenez compte des exigences, restrictions et recommandations suivantes :
+ Si votre réplica SQL Server se trouve dans la même région que son instance de base de données source, assurez-vous qu'il appartient au même groupe d'options que l'instance de base de données source. Les modifications apportées au groupe d'options source ou à l'appartenance au groupe d'options source sont propagées aux réplicas. Ces modifications sont appliquées aux réplicas immédiatement après leur application à l'instance de base de données source, quelle que soit la fenêtre de maintenance du réplica.

  Pour plus d’informations sur les groupes d’options, consultez [Utilisation de groupes d’options](USER_WorkingWithOptionGroups.md).
+ Lorsque vous créez un réplica SQL Server entre régions, Amazon RDS crée un groupe d'options qui lui est dédié.

  Vous ne pouvez pas supprimer un réplica SQL Server entre régions du groupe d'options qui lui est dédié. Aucune autre instance de base de données ne peut utiliser le groupe d'options dédié à un réplica SQL Server entre régions.

  Les options suivantes sont des options répliquées. Pour ajouter des options répliquées à un réplica SQL Server entre régions, ajoutez-le au groupe d'options de l'instance de base de données source. L’option est également installée sur tous les réplicas de l’instance de base de données source.
  + `TDE`

  Les options suivantes sont des options non répliquées. Vous pouvez ajouter ou supprimer des options non répliquées dans un groupe d'options dédié.
  + `MSDTC`
  + `SQLSERVER_AUDIT`
  + Pour activer l'option `SQLSERVER_AUDIT` sur le réplica en lecture entre régions, ajoutez l'option `SQLSERVER_AUDIT` sur le groupe d'options dédié sur le réplica en lecture entre régions et dans le groupe d'options de l'instance source. En ajoutant l'option `SQLSERVER_AUDIT` sur l'instance source du réplica en lecture SQL Server entre régions, vous pouvez créer un objet d'audit au niveau du serveur et des spécifications d'audit au niveau du serveur sur chacun des réplicas en lecture entre régions de l'instance source. Pour autoriser l'accès aux réplicas en lecture entre régions afin de charger les journaux d'audit complets dans un compartiment Amazon S3, ajoutez l'option `SQLSERVER_AUDIT` au groupe d'options dédié et configurez les paramètres des options. Le compartiment Amazon S3 que vous utilisez comme cible pour les fichiers d'audit doit se trouver dans la même région que le réplica en lecture entre régions. Vous pouvez modifier le paramètre de l'option pour chaque réplica en lecture entre régions indépendamment afin que chacun puisse accéder à un compartiment Amazon S3 dans sa région respective.

  Les options suivantes ne sont pas prises en charge pour les réplicas en lecture.
  + `SSRS`
  + `SSAS`
  + `SSIS`

  Les options suivantes sont partiellement prises en charge pour les réplicas en lecture entre régions.
  + `SQLSERVER_BACKUP_RESTORE`
  + L'instance de base de données source d'un réplica SQL Server entre régions peut avoir l'option `SQLSERVER_BACKUP_RESTORE`, mais vous ne pouvez pas effectuer de restaurations natives sur l'instance de base de données source tant que vous n'avez pas supprimé tous ses réplicas entre régions. Toutes les tâches de restauration natives existantes seront annulées lors de la création d'un réplica entre régions. Vous ne pouvez pas ajouter l'option `SQLSERVER_BACKUP_RESTORE` à un groupe d'options dédié.

    Pour plus d'informations sur la sauvegarde et la restauration natives, consultez [Importation et exportation de bases de données SQL Server à l'aide de la sauvegarde et de la restauration natives](SQLServer.Procedural.Importing.md).

  Lorsque vous promouvez un réplica en lecture SQL Server entre régions, le réplica promu se comporte de la même façon que d'autres instances de base de données SQL Server, y compris pour la gestion de ses options. Pour plus d’informations sur les groupes d’options, consultez [Utilisation de groupes d’options](USER_WorkingWithOptionGroups.md).

# Synchronisation des utilisateurs et des objets de base de données avec un réplica en lecture SQL Server
<a name="SQLServer.ReadReplicas.ObjectSynchronization"></a>

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 SIDs les connexions SQL, elles ne pourront pas accéder à la base de données dans la réplique 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.

1. 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é.

1. 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
   ```

1. 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';
   ```

1. 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.

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

   ```
   USE [REPLACE WITH YOUR DB NAME]
   GO
   EXEC sp_change_users_login 'Report';
   GO
   ```

1. 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é.

# Résolution d'un problème de réplica en lecture SQL Server
<a name="SQLServer.ReadReplicas.Troubleshooting"></a>

Vous pouvez surveiller le retard de réplication dans Amazon CloudWatch en consultant la métrique Amazon RDS `ReplicaLag`. Pour plus d’informations sur la durée du retard de réplication, consultez [Supervision de la réplication en lecture](USER_ReadRepl.Monitoring.md).

Si le retard de réplication est trop long, vous pouvez utiliser la requête suivante pour obtenir des informations sur le retard

```
SELECT AR.replica_server_name
     , DB_NAME (ARS.database_id) 'database_name'
     , AR.availability_mode_desc
     , ARS.synchronization_health_desc
     , ARS.last_hardened_lsn
     , ARS.last_redone_lsn
     , ARS.secondary_lag_seconds
FROM sys.dm_hadr_database_replica_states ARS
INNER JOIN sys.availability_replicas AR ON ARS.replica_id = AR.replica_id
--WHERE DB_NAME(ARS.database_id) = 'database_name'
ORDER BY AR.replica_server_name;
```