

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.

# Fonctionnalités supplémentaires pour Microsoft SQL Server sur Amazon RDS
<a name="User.SQLServer.AdditionalFeatures"></a>

Dans les sections suivantes, vous trouverez des informations sur l'augmentation des instances Amazon RDS exécutant le moteur de base de données Microsoft SQL Server.

**Topics**
+ [Utilisation d’une stratégie de mot de passe pour les connexions SQL Server sur RDS for SQL Server](SQLServer.Concepts.General.PasswordPolicy.Using.md)
+ [Intégration d'une instance de base de données Amazon RDS for SQL Server DB avec Amazon S3](User.SQLServer.Options.S3-integration.md)
+ [Utilisation de Database Mail sur Amazon RDS for SQL Server](SQLServer.DBMail.md)
+ [Prise en charge du stockage d'instance pour la base de données tempdb sur Amazon RDS for SQL Server](SQLServer.InstanceStore.md)
+ [Utilisation d'événements étendus avec Amazon RDS for Microsoft SQL Server](SQLServer.ExtendedEvents.md)
+ [Accès aux sauvegardes des journaux de transactions avec RDS for SQL Server](USER.SQLServer.AddlFeat.TransactionLogAccess.md)

# Utilisation d’une stratégie de mot de passe pour les connexions SQL Server sur RDS for SQL Server
<a name="SQLServer.Concepts.General.PasswordPolicy.Using"></a>

Amazon RDS vous permet de définir la stratégie de mot de passe pour votre instance de base de données Amazon RDS exécutant Microsoft SQL Server. Utilisez-le pour définir les exigences de complexité, de longueur et de verrouillage pour les connexions qui utilisent l’authentification SQL Server pour s’authentifier auprès de votre instance de base de données.

## Termes clés
<a name="SQLServer.Concepts.General.PasswordPolicy.Using.KT"></a>

**Connexion**  
Dans SQL Server, un principal au niveau du serveur capable de s’authentifier auprès d’une instance de base de données est appelé **connexion**. D’autres moteurs de base de données peuvent désigner ce principal en tant qu’*utilisateur*. Dans RDS for SQL Server, une connexion peut s’authentifier à l’aide de l’authentification SQL Server ou de l’authentification Windows.

**Connexion SQL Server**  
Une connexion qui utilise un nom d’utilisateur et un mot de passe pour s’authentifier à l’aide de l’authentification SQL Server est une connexion SQL Server. La stratégie de mot de passe que vous configurez via les paramètres de base de données s’applique uniquement aux connexions SQL Server.

**Connexion Windows**  
Une connexion basée sur un principal Windows et authentifiée à l’aide de l’authentification Windows est une connexion Windows. Vous pouvez configurer la stratégie de mot de passe pour vos connexions Windows dans Active Directory. Pour plus d’informations, consultez [Utilisation d'Active Directory avec RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

## Politique d’activation et de désactivation pour chaque connexion
<a name="SQLServer.Concepts.General.PasswordPolicy.EnableDisable"></a>

 Chaque connexion à SQL Server comporte des indicateurs pour `CHECK_POLICY` et `CHECK_EXPIRATION`. Par défaut, les nouvelles connexions sont créées avec `CHECK_POLICY` défini sur `ON` et `CHECK_EXPIRATION` défini sur `OFF`. 

Si `CHECK_POLICY` est activé pour une connexion, RDS for SQL Server valide le mot de passe en fonction des exigences de complexité et de longueur minimale. Les politiques de verrouillage s’appliquent également. Exemple d’instruction T-SQL pour activer `CHECK_POLICY` et `CHECK_EXPIRATION` : 

```
ALTER LOGIN [master_user] WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
```

Si `CHECK_EXPIRATION` est activé, les mots de passe sont soumis aux politiques relatives à l’ancienneté des mots de passe. L’instruction T-SQL pour vérifier si `CHECK_POLICY` et `CHECK_EXPIRATION` sont définis :

```
SELECT name, is_policy_checked, is_expiration_checked FROM sys.sql_logins;
```

## Paramètres de la stratégie de mot de passe
<a name="SQLServer.Concepts.General.PasswordPolicy.PWDPolicyParams"></a>

Tous les paramètres de la stratégie de mot de passe sont dynamiques et prennent effet sans qu’il soit nécessaire de redémarrer la base de données. Le tableau suivant répertorie les paramètres de base de données que vous pouvez définir afin de modifier la stratégie de mot de passe pour les connexions à SQL Server :


****  

| Paramètre de base de données | Description | Valeurs autorisées | Valeur par défaut | 
| --- | --- | --- | --- | 
| rds.password\$1complexity\$1enabled | Les exigences de complexité des mots de passe doivent être respectées lors de la création ou de la modification de mots de passe pour les connexions à SQL Server. Les contraintes suivantes doivent être respectées : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.PasswordPolicy.Using.html)  | 0,1 | 0 | 
| rds.password\$1min\$1length | Nombre minimum de caractères requis dans un mot de passe pour une connexion à SQL Server. | 0-14 | 0 | 
| rds.password\$1min\$1age | Nombre minimum de jours pendant lesquels un mot de passe de connexion à SQL Server doit être utilisé avant que l’utilisateur puisse le modifier. Les mots de passe peuvent être modifiés immédiatement lorsque cette valeur est définie sur 0. | 0-998 | 0 | 
| rds.password\$1max\$1age | Nombre maximal de jours pendant lesquels un mot de passe de connexion à SQL Server peut être utilisé, après lequel l’utilisateur doit le modifier. Les mots de passe n’expirent jamais lorsque cette valeur est définie sur 0. | 0-999 | 42 | 
| rds.password\$1lockout\$1threshold | Nombre de tentatives de connexion infructueuses consécutives qui entraînent le blocage de la connexion à SQL Server. | 0-999 | 0 | 
| rds.password\$1lockout\$1duration | Nombre de minutes d’attente avant qu’une connexion à SQL Server bloquée ne soit débloquée. | 1-60 | 10 | 
| rds.password\$1lockout\$1reset\$1counter\$1after | Nombre de minutes qui doivent s’écouler après l’échec d’une tentative de connexion et avant que le compteur de tentatives de connexion infructueuses soit remis à 0. | 1-60 | 10 | 

**Note**  
Pour plus d’informations sur la stratégie de mot de passe de SQL Server, consultez [Stratégie de mot de passe](https://learn.microsoft.com/en-us/sql/relational-databases/security/password-policy).   
Les stratégies relatives à la complexité et à la longueur minimale des mots de passe s’appliquent également aux utilisateurs des bases de données contenues. Pour plus d’informations, consultez [Bases de données contenues](https://learn.microsoft.com/en-us/sql/relational-databases/databases/contained-databases).

Les contraintes suivantes s’appliquent aux paramètres de stratégie de mot de passe :
+ Le paramètre `rds.password_min_age` doit être inférieur à `rds.password_max_age parameter`, sauf si `rds.password_max_age` est défini sur 0
+ Le paramètre `rds.password_lockout_reset_counter_after` doit être inférieur ou égal au paramètre `rds.password_lockout_duration`.
+ Si `rds.password_lockout_threshold` est défini sur 0, `rds.password_lockout_duration` et `rds.password_lockout_reset_counter_after` ne s’appliquent pas.

### Considérations relatives aux connexions existantes
<a name="SQLServer.Concepts.General.PasswordPolicy.ExistingLogins"></a>

Une fois la stratégie de mot de passe modifiée sur une instance, les mots de passe existants pour les connexions **ne sont pas** évalués rétroactivement par rapport aux nouvelles exigences en matière de complexité et de longueur des mots de passe. Seuls les nouveaux mots de passe sont validés par rapport à la nouvelle stratégie. 

SQL Server **évalue** les mots de passe existants en fonction de l’ancienneté requise.

Il est possible que les mots de passe expirent immédiatement après la modification d’une stratégie de mot de passe. Par exemple, si `CHECK_EXPIRATION` est activé pour une connexion et que son mot de passe a été modifié pour la dernière fois il y a 100 jours, et que vous définissez le paramètre `rds.password_max_age` sur 5 jours, le mot de passe expire immédiatement. Le mot de passe doit être modifié lors de la prochaine tentative de connexion.

**Note**  
RDS for SQL Server ne prend pas en charge les stratégies d’historique de mot de passe. Les stratégies d’historique empêchent les connexions de réutiliser les mots de passe précédemment utilisés.

### Considérations sur les déploiements multi-AZ
<a name="SQLServer.Concepts.General.PasswordPolicy.MAZPasswords"></a>

Le compteur de tentatives de connexion infructueuses et l’état de blocage des instances multi-AZ ne se répliquent pas entre les nœuds. Si une connexion est bloquée lorsqu’une instance multi-AZ bascule, il est possible que la connexion soit déjà débloquée sur le nouveau nœud.

# Considérations sur l’utilisation du mot de passe pour la connexion principale
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin"></a>

Lorsque vous créez une instance de base de données RDS for SQL Server, le mot de passe de l’utilisateur principal n’est pas évalué par rapport à la stratégie de mot de passe. Un nouveau mot de passe principal n’est pas non plus évalué par rapport au mot de passe lorsque vous effectuez des opérations sur l’utilisateur principal, en particulier lors de la configuration de `MasterUserPassword` dans la commande `ModifyDBInstance`. Dans les deux cas, vous pouvez définir un mot de passe pour l’utilisateur principal qui ne correspond pas à votre politique en matière de mots de passe, et l’opération réussit tout de même. Si la politique n’est pas respectée, RDS tente de déclencher un événement RDS, avec la recommandation de définir un mot de passe fort. Veillez à n’utiliser que des mots de passe forts pour l’utilisateur principal. 

RDS tente de générer les messages d’événement suivants lorsque le mot de passe de l’utilisateur principal ne répond pas aux exigences de la stratégie de mot de passe :
+ L’utilisateur principal a été créé, mais le mot de passe ne respecte pas la longueur minimale requise par votre politique en matière de mots de passe. Envisagez d’utiliser un mot de passe plus fort.
+ L’utilisateur principal a été créé, mais le mot de passe ne respecte pas la complexité requise par votre politique en matière de mots de passe. Envisagez d’utiliser un mot de passe plus fort.
+ Le mot de passe de l’utilisateur principal a été réinitialisé, mais il passe ne respecte pas la longueur minimale requise par votre politique en matière de mots de passe. Envisagez d’utiliser un mot de passe plus fort.
+ Le mot de passe de l’utilisateur principal a été réinitialisé, mais il ne respecte pas la complexité requise par votre politique en matière de mots de passe. Envisagez d’utiliser un mot de passe plus fort.

Par défaut, l’utilisateur principal est créé avec `CHECK_POLICY` et `CHECK_EXPIRATION` est défini sur `OFF`. Pour appliquer la stratégie de mot de passe à l’utilisateur principal, vous devez activer manuellement ces indicateurs pour l’utilisateur principal après la création de l’instance de base de données. Après avoir activé ces indicateurs, modifiez le mot de passe de l’utilisateur principal directement dans SQL Server (par exemple via des instructions T-SQL ou SSMS) pour valider le nouveau mot de passe par rapport à la stratégie de mot de passe.

**Note**  
Si l’utilisateur principal est verrouillé, vous pouvez le déverrouiller en réinitialisant le mot de passe de l’utilisateur principal à l’aide de la commande `ModifyDBInstance`.

## Modification du mot de passe utilisateur principal
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin.Reset"></a>

Vous pouvez modifier le mot de passe de l’utilisateur principal à l’aide de la commande [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html).

**Note**  
Lorsque vous réinitialisez le mot de passe de l’utilisateur principal, RDS réinitialise diverses autorisations pour l’utilisateur principal, qui peut perdre certaines autorisations. La réinitialisation du mot de passe de l’utilisateur principal déverrouille également l’utilisateur principal, s’il a été verrouillé.

RDS valide le nouveau mot de passe de l’utilisateur principal et tente d’émettre un événement RDS si le mot de passe ne respecte pas la politique. RDS définit le mot de passe même s’il ne respecte pas la stratégie de mot de passe. 

# Intégration d'une instance de base de données Amazon RDS for SQL Server DB avec Amazon S3
<a name="User.SQLServer.Options.S3-integration"></a>

Vous pouvez transférer des fichiers entre une instance de base de données exécutant Amazon RDS for SQL Server et un compartiment Amazon S3. Ainsi, vous pouvez utiliser Amazon S3 avec des fonctionnalités SQL, telles que BULK INSERT. Par exemple, vous pouvez télécharger des fichiers .csv, .xml, .txt, etc. depuis Amazon S3 vers l'hôte de l'instance de base de données, puis importer les données depuis `D:\S3\` dans la base de données. Tous les fichiers sont stockés dans `D:\S3\` sur l'instance de base de données.

Les limites suivantes s'appliquent :

**Note**  
Le trafic entre l'hôte RDS et S3 est acheminé via les points de terminaison VPC dans RDS en VPCs interne pour toutes les fonctionnalités de SQL Server qui utilisent S3. Ce trafic n’utilise pas le point de terminaison de l’instance RDS ENI. Les stratégies de compartiment S3 ne peuvent pas restreindre le trafic RDS en fonction des conditions du réseau.
+ Les fichiers du dossier `D:\S3` sont supprimés du réplica de secours après un basculement sur des instances Multi-AZ. Pour de plus amples informations, veuillez consulter [Limitations Multi-AZ pour l'intégration S3](#S3-MAZ).
+ L'instance de base de données et le compartiment S3 doivent se trouver dans la même AWS région.
+ Si vous exécutez plusieurs tâches d'intégration S3 simultanément, les tâches s'exécutent de manière séquentielle et non en parallèle.
**Note**  
Les tâches d'intégration S3 partagent la même file d'attente que les tâches de sauvegarde et de restauration natives. Vous pouvez uniquement disposer de deux tâches maximum en cours à tout moment dans cette file d'attente. Par conséquent, deux tâches de sauvegarde et de restauration natives en cours d'exécution bloquent toutes les tâches d'intégration S3.
+ Vous devez réactiver la fonctionnalité d'intégration S3 sur les instances restaurées. Elle ne se propage pas depuis l'instance source vers l'instance restaurée. Sur une instance restaurée, les fichiers situés sous `D:\S3` sont supprimés.
+ Le téléchargement vers l'instance de base de données est limité à 100 fichiers. En d'autres termes, il ne peut pas y avoir plus de 100 fichiers dans `D:\S3\`.
+ Seuls les fichiers sans extension ou qui possèdent une des extensions suivantes sont pris en charge pour le téléchargement : .abf, .asdatabase, .bcp, .configsettings, .csv, .dat, .deploymentoptions, .deploymenttargets, .fmt, .info, .ispac, .lst, .tbl, .txt, .xml et .xmla.
+ Le compartiment S3 doit avoir le même propriétaire que le rôle Gestion des identités et des accès AWS (IAM) associé. Par conséquent, l'intégration S3 entre comptes n'est pas prise en charge.
+ Le compartiment S3 ne peut pas être ouvert au public.
+ La taille des chargements de RDS vers S3 est limitée à 50 Go par fichier.
+ La taille des fichiers téléchargés de S3 vers RDS est limitée au maximum pris en charge par S3.

**Topics**
+ [Prérequis pour l'intégration de RDS for SQL Server avec S3](Appendix.SQLServer.Options.S3-integration.preparing.md)
+ [Activation de l'intégration de RDS for SQL Server avec S3](Appendix.SQLServer.Options.S3-integration.enabling.md)
+ [Transfert de fichiers entre RDS for SQL Server et Amazon S3](Appendix.SQLServer.Options.S3-integration.using.md)
+ [Liste des fichiers sur l'instance de base de données RDS](Appendix.SQLServer.Options.S3-integration.using.listing-files.md)
+ [Suppression de fichiers sur l'instance de base de données RDS](Appendix.SQLServer.Options.S3-integration.using.deleting-files.md)
+ [Surveillance du statut d'une tâche de transfert de fichiers](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md)
+ [Annulation d'une tâche](Appendix.SQLServer.Options.S3-integration.canceltasks.md)
+ [Limitations Multi-AZ pour l'intégration S3](#S3-MAZ)
+ [Désactivation de l'intégration de RDS for SQL Server avec S3](Appendix.SQLServer.Options.S3-integration.disabling.md)

Pour plus d’informations sur l’utilisation des fichiers dans Amazon S3, consultez [Démarrer avec Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3).

# Prérequis pour l'intégration de RDS for SQL Server avec S3
<a name="Appendix.SQLServer.Options.S3-integration.preparing"></a>

Avant de commencer, recherchez ou créez le compartiment S3 que vous souhaitez utiliser. De plus, ajoutez des autorisations afin que l'instance de base de données RDS puisse accéder au compartiment S3. Pour configurer cet accès, vous créez une stratégie et un rôle IAM.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.preparing.console"></a>

**Pour créer une stratégie IAM afin d'accéder à Amazon S3**

1. Dans la console [IAM Management Console](https://console.aws.amazon.com/iam/home?#home), choisissez **Stratégie** dans le panneau de navigation.

1. Créez une nouvelle stratégie et utilisez l'onglet **Éditeur visuel** pour exécuter les étapes suivantes.

1. Pour **Service**, saisissez **S3** et choisissez le service **S3**.

1. Pour **Actions**, choisissez les actions suivantes pour accorder l'accès nécessaire à votre instance de base de données :
   + `ListAllMyBuckets` – Obligatoire
   + `ListBucket` – Obligatoire
   + `GetBucketAcl` – Obligatoire
   + `GetBucketLocation` – Obligatoire
   + `GetObject` : obligatoire pour télécharger des fichiers depuis S3 vers `D:\S3\`
   + `PutObject` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3
   + `ListMultipartUploadParts` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3
   + `AbortMultipartUpload` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3

1. Pour **Ressources**, les options qui s'affichent dépendent des actions choisies dans l'étape précédente. Vous pourrez voir des options pour **compartiment**, **objet** ou les deux. Pour chacune d'entre elles, ajoutez l'Amazon Resource Name (ARN) approprié.

   Pour **compartiment**, ajoutez l'ARN du compartiment que vous souhaitez utiliser. Par exemple, si votre compartiment est nommé *amzn-s3-demo-bucket*, définissez l'ARN sur `arn:aws:s3:::amzn-s3-demo-bucket`.

   Pour **objet**, saisissez l'ARN pour le compartiment, puis choisissez l'une des options suivantes :
   + Pour accorder l'accès à tous les fichiers d'un compartiment spécifié, choisissez **Tous** pour le **Bucket name (Nom du compartiment)** et le **Object name (Nom de l'objet)**.
   + Pour accorder l'accès à des fichiers ou à des dossiers spécifiques du bucket, ARNs indiquez les buckets et les objets spécifiques auxquels vous souhaitez que SQL Server accède. 

1. Suivez les instructions dans la console jusqu'à la création de la stratégie.

   Ce qui précède est un guide abrégé pour configurer une stratégie. Pour obtenir des instructions détaillées sur la création de stratégies IAM, consultez [Création de stratégies IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le *Guide de l’utilisateur IAM.*

**Pour créer un rôle IAM utilisant la stratégie IAM de la procédure précédente.**

1. Dans la console [IAM Management Console](https://console.aws.amazon.com/iam/home?#home), choisissez **Rôles** dans le panneau de navigation.

1. Créez un rôle IAM et choisissez les options suivantes à mesure qu'elles s'affichent dans la console :
   + **AWSweb**
   + **RDS**
   + **RDS – Ajoutez un rôle à la base de données**

   Ensuite, choisissez **Suivant : Autorisations** en bas.

1. Pour **Attach permissions policies (Attacher des stratégies d'autorisations)**, saisissez le nom de la stratégie IAM précédemment créée. Ensuite, choisissez la stratégie dans la liste.

1. Suivez les instructions dans la console jusqu'à la création du rôle.

   Ce qui précède est un guide abrégé pour configurer un rôle. Pour obtenir des instructions plus détaillées sur la création des rôles, consultez [Rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) dans le *Guide de l’utilisateur IAM.*

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.preparing.CLI"></a>

Pour accorder à Amazon RDS l'accès à un compartiment Amazon S3, procédez comme suit :

1. Créez une stratégie IAM qui accorde à Amazon RDS l'accès à un compartiment S3.

1. Créez un rôle IAM qu'Amazon RDS peut endosser en votre nom pour accéder à vos compartiments S3.

   Pour plus d’informations, consultez [Création d’un rôle pour déléguer des autorisations à un utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) dans le *Guide de l’utilisateur IAM*.

1. Attachez la politique IAM que vous avez créée au rôle IAM que vous venez de créer.

**Pour créer la stratégie IAM**

Ajoutez les actions appropriées pour accorder l'accès nécessaire à votre instance de base de données :
+ `ListAllMyBuckets` – Obligatoire
+ `ListBucket` – Obligatoire
+ `GetBucketAcl` – Obligatoire
+ `GetBucketLocation` – Obligatoire
+ `GetObject` : obligatoire pour télécharger des fichiers depuis S3 vers `D:\S3\`
+ `PutObject` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3
+ `ListMultipartUploadParts` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3
+ `AbortMultipartUpload` : obligatoire pour charger des fichiers depuis `D:\S3\` vers S3

1. La AWS CLI commande suivante crée une politique IAM nommée `rds-s3-integration-policy` avec ces options. Elle accorde un accès à un compartiment nommé *amzn-s3-demo-bucket*.  
**Example**  

   Pour Linux, macOS ou Unix :

   ```
   aws iam create-policy \
   	 --policy-name rds-s3-integration-policy \
   	 --policy-document '{
   	        "Version": "2012-10-17",		 	 	 
   	        "Statement": [
   	            {
   	                "Effect": "Allow",
   	                "Action": "s3:ListAllMyBuckets",
   	                "Resource": "*"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:ListBucket",
   	                    "s3:GetBucketAcl",
   	                    "s3:GetBucketLocation"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:GetObject",
   	                    "s3:PutObject",
   	                    "s3:ListMultipartUploadParts",
   	                    "s3:AbortMultipartUpload"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
   	            }
   	        ]
   	    }'
   ```

   Pour Windows :

   Veillez à remplacer les fins de ligne par celles prises en charge par votre interface (`^` au lieu de `\`). De plus, dans Windows, vous devez utiliser une séquence d'échappement sur tous les guillemets doubles avec un `\`. Pour éviter d'utiliser une séquence d'échappement sur tous les guillemets dans le JSON, vous pouvez l'enregistrer dans un fichier et le transmettre en tant que paramètre. 

   Tout d'abord, créez le fichier `policy.json` avec la stratégie d'autorisation suivante :

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:ListAllMyBuckets",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketACL",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:ListMultipartUploadParts",
                   "s3:AbortMultipartUpload"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
           }
       ]
   }
   ```

------

   Ensuite, utilisez la commande suivante pour créer la stratégie :

   ```
   aws iam create-policy ^
        --policy-name rds-s3-integration-policy ^
        --policy-document file://file_path/assume_role_policy.json
   ```

1. Après avoir créé la stratégie, notez son ARN (Amazon Resource Name). Vous aurez besoin de l'ARN lors d'une étape ultérieure.

**Pour créer le rôle IAM**
+ La AWS CLI commande suivante crée le rôle `rds-s3-integration-role` IAM à cette fin.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole"
  	       }
  	     ]
  	   }'
  ```

  Pour Windows :

  Veillez à remplacer les fins de ligne par celles prises en charge par votre interface (`^` au lieu de `\`). De plus, dans Windows, vous devez utiliser une séquence d'échappement sur tous les guillemets doubles avec un `\`. Pour éviter d'utiliser une séquence d'échappement sur tous les guillemets dans le JSON, vous pouvez l'enregistrer dans un fichier et le transmettre en tant que paramètre. 

  Tout d'abord, créez le fichier `assume_role_policy.json` avec la stratégie suivante :

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------

  Ensuite, utilisez la commande suivante pour créer le rôle IAM :

  ```
  aws iam create-role ^
       --role-name rds-s3-integration-role ^
       --assume-role-policy-document file://file_path/assume_role_policy.json
  ```  
**Example d'utiliser la clé de contexte de condition globale pour créer le rôle IAM**  

  Nous vous recommandons d'utiliser les clés de contexte de condition globale [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) et [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) dans des politiques basées sur les ressources pour limiter les autorisations du service à une ressource spécifique. C’est le moyen le plus efficace de se protéger contre le [problème du député confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

  Vous pouvez utiliser les deux clés de contexte de condition globale et faire en sorte que la valeur `aws:SourceArn` contienne l'ID de compte. Dans ce cas, la valeur `aws:SourceAccount` et le compte dans la valeur `aws:SourceArn` doivent utiliser le même ID de compte lorsqu'ils sont utilisés dans la même instruction de politique.
  + Utilisez `aws:SourceArn` si vous souhaitez un accès interservices pour une seule ressource.
  + Utilisez `aws:SourceAccount` si vous souhaitez autoriser une ressource de ce compte à être associée à l’utilisation interservices.

  Dans la politique, assurez-vous d'utiliser la clé de contexte de condition globale `aws:SourceArn` avec l'Amazon Resource Name (ARN) complet des ressources qui accèdent au rôle. Pour l'intégration S3, assurez-vous d'inclure l'instance de base de données ARNs, comme indiqué dans l'exemple suivant.

  Pour Linux, macOS ou Unix :

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                      }
                  }
  	       }
  	     ]
  	   }'
  ```

  Pour Windows :

  Ajoutez la clé de contexte de condition globale à `assume_role_policy.json`.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                  }
              }
          }
      ]
  }
  ```

------

**Pour attacher la politique IAM à un rôle IAM**
+ La AWS CLI commande suivante associe la politique au rôle nommé`rds-s3-integration-role`. Remplacez `your-policy-arn` par l’ARN de stratégie que vous avez noté lors d’une étape précédente.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws iam attach-role-policy \
  	   --policy-arn your-policy-arn \
  	   --role-name rds-s3-integration-role
  ```

  Pour Windows :

  ```
  aws iam attach-role-policy ^
  	   --policy-arn your-policy-arn ^
  	   --role-name rds-s3-integration-role
  ```

# Activation de l'intégration de RDS for SQL Server avec S3
<a name="Appendix.SQLServer.Options.S3-integration.enabling"></a>

Dans la section suivante, vous trouverez comment activer l'intégration Amazon S3 avec Amazon RDS for SQL Server. Pour utiliser une intégration S3, votre instance de base de données doit être associée au rôle IAM précédemment créé avant d'utiliser le paramètre feature-name `S3_INTEGRATION`.

**Note**  
Pour ajouter un rôle IAM à une instance de base de données, le statut de l'instance de base de données doit être **disponible**.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.enabling.console"></a>

**Pour associer le rôle IAM à votre instance de base de données**

1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l’adresse [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Cliquez sur le nom de l’instance de base de données RDS for SQL Server pour en afficher les détails.

1. Dans l'onglet **Connectivity & security (Connexion et sécurité)** de la section **Gestion des rôles IAM**, choisissez le rôle IAM à ajouter sous **Add IAM roles to this instance (Ajouter des rôles IAM à cette instance)**.

1. Pour **Fonction**, choisissez **S3\$1INTEGRATION**.  
![\[Ajouter le rôle S3_INTEGRATION\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/ora-s3-integration-role.png)

1. Choisissez **Add role (Ajouter un rôle)**.

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.enabling.cli"></a>

**Pour ajouter le rôle IAM à l'instance de base de données RDS for SQL Server**
+ La commande AWS CLI suivante ajoute votre rôle IAM à une instance de base de données RDS for SQL Server nommée `mydbinstance`.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws rds add-role-to-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  Pour Windows :

  ```
  aws rds add-role-to-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  Remplacez `your-role-arn` par l’ARN du rôle que vous avez noté lors d’une étape précédente. `S3_INTEGRATION` doit être spécifié pour l’option `--feature-name`.

# Transfert de fichiers entre RDS for SQL Server et Amazon S3
<a name="Appendix.SQLServer.Options.S3-integration.using"></a>

Vous pouvez utiliser des procédures stockées Amazon RDS pour charger et télécharger des fichiers entre Amazon S3 et votre instance de base de données RDS. Vous pouvez également utiliser des procédures stockées Amazon RDS pour répertorier et supprimer des fichiers sur l'instance RDS.

Les fichiers que vous téléchargez depuis/chargez vers S3 sont stockés dans le dossier `D:\S3`. Il s'agit du seul dossier que vous pouvez utiliser pour accéder à vos fichiers. Vous pouvez organiser vos fichiers en sous-dossiers, qui sont créés pour vous lorsque vous incluez le dossier de destination lors du téléchargement.

Certaines procédures stockées exigent que vous fournissiez un nom ARN (Amazon Resource Name) à votre compartiment et votre fichier S3. Le format pour votre ARN est `arn:aws:s3:::amzn-s3-demo-bucket/file_name`. Amazon S3 n'a pas besoin de numéro de compte ni de AWS région dans ARNs.

Les tâches d'intégration S3 s'exécutent de manière séquentielle, partagent la même file d'attente que la sauvegarde native et restaurent des tâches. Vous pouvez uniquement disposer de deux tâches maximum en cours à tout moment dans cette file d'attente. Le traitement de la tâche peut mettre jusqu'à cinq minutes avant de commencer.

## Téléchargement des fichiers d'un compartiment Amazon S3 vers une instance de base de données SQL Server
<a name="Appendix.SQLServer.Options.S3-integration.using.download"></a>

Pour télécharger des fichiers d'un compartiment S3 vers une instance de base de données RDS for SQL Server, suivez la procédure `msdb.dbo.rds_download_from_s3` stockée dans Amazon RDS avec les paramètres suivants.


| Nom du paramètre | Type de données | Par défaut | Obligatoire | Description | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  Obligatoire  |  L'ARN S3 du fichier à télécharger, par exemple : `arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Facultatif  |  Le chemin du fichier pour l'instance RDS. Si aucun n'est spécifié, le chemin du fichier est `D:\S3\<filename in s3>`. RDS prend en charge des chemins absolus et relatifs. Si vous souhaitez créer un sous-dossier, incluez-le dans le chemin du fichier.  | 
|  `@overwrite_file`  |  INT  |  0  |  Facultatif  | Écraser le fichier existant :  0 = Ne pas écraser 1 = Écraser | 

Vous pouvez télécharger des fichiers sans extension de fichier et des fichiers avec les extensions de fichier suivantes : .bcp, .csv, .dat, .fmt, .info, .lst, .tbl, .txt et .xml.

**Note**  
Les fichiers avec l'extension de fichier .ispac sont pris en charge pour le téléchargement lorsque SQL Server Integration Services est activé. Pour plus d'informations sur l'activation de SSIS, veuillez consulter [SQL Server Integration Services](Appendix.SQLServer.Options.SSIS.md).  
Les fichiers avec les extensions de fichier suivantes sont pris en charge pour le téléchargement lorsque SQL Server Analysis Services est activé : .abf, .asdatabase, .configsettings, .deploymentoptions, .deploymenttargets et .xmla. Pour plus d'informations sur l'activation de SSAS, veuillez consulter [SQL Server Analysis Services](Appendix.SQLServer.Options.SSAS.md).

L'exemple suivant illustre la procédure stockée pour télécharger des fichiers depuis S3. 

```
exec msdb.dbo.rds_download_from_s3
	    @s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/bulk_data.csv',
	    @rds_file_path='D:\S3\seed_data\data.csv',
	    @overwrite_file=1;
```

L'exemple `rds_download_from_s3` créé un dossier nommé `seed_data` in `D:\S3\`, si le dossier n'existe pas encore. Ensuite, l'exemple télécharge le fichier source `bulk_data.csv` depuis S3 vers un nouveau fichier nommé `data.csv` sur l'instance de base de données. Si le fichier existait déjà, il est écrasé car le paramètre `@overwrite_file` est défini sur `1`.

## Téléchargement des fichiers depuis une instance de base de données SQL Server vers un compartiment Amazon S3
<a name="Appendix.SQLServer.Options.S3-integration.using.upload"></a>

Pour charger des fichiers d'une instance de base de données RDS for SQL Server vers un compartiment S3, suivez la procédure `msdb.dbo.rds_upload_to_s3` stockée dans Amazon RDS avec les paramètres suivants.


| Nom du paramètre | Type de données | Par défaut | Obligatoire | Description | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  Obligatoire  |  L'ARN S3 du fichier à créer dans S3, par exemple : `arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Obligatoire  | Le chemin du fichier à charger sur S3. Les chemins absolus et relatifs sont pris en charge. | 
|  `@overwrite_file`  |  INT  |  –  |  Facultatif  |  Écraser le fichier existant :  0 = Ne pas écraser 1 = Écraser  | 

L'exemple suivant charge le fichier nommé `data.csv` depuis l'emplacement spécifié dans `D:\S3\seed_data\` vers un fichier `new_data.csv` dans le compartiment S3 spécifié par l'ARN.

```
exec msdb.dbo.rds_upload_to_s3 
		@rds_file_path='D:\S3\seed_data\data.csv',
		@s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/new_data.csv',
		@overwrite_file=1;
```

Si le fichier existait déjà dans S3, il est écrasé car le paramètre @overwrite\$1file est défini sur `1`.

# Liste des fichiers sur l'instance de base de données RDS
<a name="Appendix.SQLServer.Options.S3-integration.using.listing-files"></a>

Pour répertorier les fichiers disponibles sur l'instance de base de données, utilisez une procédure stockée et une fonction. Tout d'abord, exécutez la procédure stockée suivante pour récupérer les détails depuis les fichiers dans `D:\S3\`. 

```
exec msdb.dbo.rds_gather_file_details;
```

La procédure stockée retourne l'ID de la tâche. À l'instar d'autres tâches, cette procédure stockée s'exécute de manière asynchrone. Dès que le statut de la tâche est `SUCCESS`, vous pouvez utiliser l'ID de tâche dans la fonction `rds_fn_list_file_details` pour répertorier les fichiers et répertoires existants dans D:\$1S3\$1, comme illustré ci-dessous.

```
SELECT * FROM msdb.dbo.rds_fn_list_file_details(TASK_ID);
```

La fonction `rds_fn_list_file_details` retourne un tableau avec les colonnes suivantes.


| Paramètre de sortie | Description | 
| --- | --- | 
| filepath | Chemin absolu du fichier (par exemple, D:\$1S3\$1mydata.csv) | 
| size\$1in\$1bytes | Taille du fichier (en octets) | 
| last\$1modified\$1utc | Date et heure de la dernière modification au format UTC | 
| is\$1directory | Option qui indique si l'objet est un annuaire (true/false) | 

# Suppression de fichiers sur l'instance de base de données RDS
<a name="Appendix.SQLServer.Options.S3-integration.using.deleting-files"></a>

Pour supprimer les fichiers disponibles sur l'instance de base de données, utilisez la procédure stockée Amazon RDS `msdb.dbo.rds_delete_from_filesystem` avec les paramètres suivants. 


| Nom du paramètre | Type de données | Par défaut | Obligatoire | Description | 
| --- | --- | --- | --- | --- | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Obligatoire  | Le chemin du fichier à supprimer. Les chemins absolus et relatifs sont pris en charge.  | 
|  `@force_delete`  |  INT  | 0 |  Facultatif  |  Pour supprimer un annuaire, cet indicateur doit être inclus et défini sur `1`. `1` = Supprimer un annuaire Ce paramètre est ignoré si vous supprimez un fichier.  | 

Pour supprimer un annuaire, `@rds_file_path` doit se terminer par une barre oblique inverse (`\`) et `@force_delete` doit être défini sur `1`.

L'exemple suivant supprimer le fichier `D:\S3\delete_me.txt`.

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\delete_me.txt';
```

L'exemple suivant supprime l'annuaire `D:\S3\example_folder\`.

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\example_folder\',
    @force_delete=1;
```

# Surveillance du statut d'une tâche de transfert de fichiers
<a name="Appendix.SQLServer.Options.S3-integration.using.monitortasks"></a>

Pour suivre le statut de votre tâche d'intégration S3, appelez la fonction `rds_fn_task_status`. Deux paramètres sont nécessaires. Le premier paramètre doit toujours être `NULL` car il ne s'applique pas à l'intégration S3. Le second paramètre accepte l'ID de tâche.

Pour consulter une liste de toutes les tâches, définissez le premier paramètre sur `NULL` et le second sur `0`, comme illustré dans l'exemple suivant.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Pour obtenir une tâche spécifique, définissez le premier paramètre sur `NULL` et le second sur l'ID de tâche, comme illustré dans l'exemple suivant.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

La fonction `rds_fn_task_status` retourne les informations suivantes.


|  Paramètre de sortie  |  Description  | 
| --- | --- | 
|  `task_id`  |  ID de la tâche  | 
|  `task_type`  |  Pour l'intégration S3, des tâches peuvent avoir les types suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `database_name`  | Non applicable aux tâches d'intégration S3. | 
|  `% complete`  |  Progression de la tâche sous forme de pourcentage.  | 
|  `duration(mins)`  |  Temps consacré à la tâche, en minutes.  | 
|  `lifecycle`  |  État de la tâche. Les statuts possibles sont les suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `task_info`  |  Informations supplémentaires sur la tâche. Si une erreur se produit pendant le traitement, cette colonne contient des informations sur l'erreur.   | 
|  `last_updated`  |  Date et heure de la dernière mise à jour de l'état de la tâche.   | 
|  `created_at`  |  Date et heure de création de la tâche.  | 
|  `S3_object_arn`  |  L'ARN de l'objet S3 depuis lequel le téléchargement est effectué et vers lequel le chargement est effectué.  | 
|  `overwrite_S3_backup_file`  |  Non applicable aux tâches d'intégration S3.  | 
|  `KMS_master_key_arn`  |  Non applicable aux tâches d'intégration S3.  | 
|  `filepath`  |  Chemin du fichier sur l'instance de base de données RDS.  | 
|  `overwrite_file`  |  Option qui indique si un fichier existant a été écrasé.  | 
|  `task_metadata`  |  Non applicable aux tâches d'intégration S3.  | 

# Annulation d'une tâche
<a name="Appendix.SQLServer.Options.S3-integration.canceltasks"></a>

Pour annuler une tâche d'intégration S3, utilisez la procédure stockée `msdb.dbo.rds_cancel_task` avec le paramètre `task_id`. Les tâches de suppression et la liste des tâches en cours ne peuvent pas être annulées. L'exemple suivant illustre une demande d'annulation d'une tâche. 

```
exec msdb.dbo.rds_cancel_task @task_id = 1234;
```

Pour obtenir un aperçu de toutes els tâches et de leurs ID de tâche, utilisez la fonction `rds_fn_task_status`, telle que décrite dans [Surveillance du statut d'une tâche de transfert de fichiers](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md).

## Limitations Multi-AZ pour l'intégration S3
<a name="S3-MAZ"></a>

Sur des instances Multi-AZ, les fichiers du dossier `D:\S3` sont supprimés du réplica de secours après un basculement. Un basculement peut être planifié, par exemple, lors de modifications apportées à une instance de base de données telles que la modification de la classe d'instance ou la mise à niveau de la version du moteur. La planification d'un basculement peut être annulée, par exemple en cas d'arrêt de l'instance principale.

**Note**  
Nous ne recommandons pas d'utiliser le dossier `D:\S3` pour le stockage de fichiers. La bonne pratique consiste à charger des fichiers créés dans Amazon S3 afin de les rendre durables, et à télécharger les fichiers lorsque vous avez besoin d'importer des données.

Pour déterminer l'heure du dernier basculement, vous pouvez utiliser la procédure stockée `msdb.dbo.rds_failover_time`. Pour plus d'informations, consultez [Détermination de l’heure du dernier basculement pour Amazon RDS for SQL Server](Appendix.SQLServer.CommonDBATasks.LastFailover.md).

**Example d'Aucun basculement récent**  
Cet exemple illustre la sortie lorsqu'il n'y a pas de basculement récent dans les journaux d'erreurs. Aucun basculement ne s'est produit depuis le 29/04/2020 à 23:59:00.01.  
Par conséquent, tous les fichiers téléchargés après cette date et cette heure et qui n'ont pas été supprimés avec la procédure stockée `rds_delete_from_filesystem` sont toujours accessibles sur l'hôte actuel. Les fichiers téléchargés avant cette date et cette heure peuvent également être disponibles.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  null  | 

**Example de Basculement récent**  
Cet exemple illustre la sortie lorsqu'un basculement récent est détecté dans les journaux d'erreurs. Le basculement le plus récent a eu lieu le 05/05/2020 à 18:57:51.89.  
Tous les fichiers téléchargés après cette date et cette heure et qui n'ont pas été supprimés avec la procédure stockée `rds_delete_from_filesystem` sont toujours accessibles sur l'hôte actuel.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  2020-05-05 18:57:51.8900000  | 

# Désactivation de l'intégration de RDS for SQL Server avec S3
<a name="Appendix.SQLServer.Options.S3-integration.disabling"></a>

Par la suite, vous trouverez comment désactiver l'intégration Amazon S3 avec Amazon RDS for SQL Server. Les fichiers stockés dans `D:\S3\` ne sont pas supprimés lors de la désactivation de l'intégration S3.

**Note**  
Pour supprimer un rôle IAM d'une instance de base de données, le statut de l'instance de base de données doit être `available`.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.disabling.console"></a>

**Pour dissocier votre rôle IAM de votre instance de base de données**

1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l’adresse [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Cliquez sur le nom de l’instance de base de données RDS for SQL Server pour en afficher les détails.

1. Dans l'onglet **Connectivity & security (Connectivité et sécurité)** de la section **Gérer les rôles IAM**, choisissez le rôle IAM à supprimer.

1. Sélectionnez **Delete (Supprimer)**.

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.disabling.cli"></a>

**Pour supprimer le rôle IAM de l'instance de base de données RDS for SQL Server**
+ La commande AWS CLI suivante supprime le rôle IAM d'une instance de base de données RDS for SQL Server nommée `mydbinstance`.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws rds remove-role-from-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  Pour Windows :

  ```
  aws rds remove-role-from-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  Remplacez `your-role-arn` par l'ARN du rôle IAM approprié pour l'option `--feature-name`.

# Utilisation de Database Mail sur Amazon RDS for SQL Server
<a name="SQLServer.DBMail"></a>

Vous pouvez utiliser Database Mail pour envoyer des e-mails à des utilisateurs à partir de votre instance de base de données Amazon RDS sur SQL Server. Les messages peuvent contenir des fichiers et des résultats de requête. Database Mail comprend les éléments suivants :
+ **Objets de configuration et de sécurité** – Ces objets créent des profils et des comptes, et sont stockés dans la base de données `msdb`.
+ **Objets de messagerie** – Ces objets incluent la procédure stockée [sp\$1send\$1dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql) utilisée pour envoyer des messages, ainsi que des structures de données contenant des informations sur les messages. Ils sont stockés dans la base de données `msdb`.
+ **Objets de journalisation et d'audit** – Database Mail écrit les informations de journalisation dans la base de données `msdb` et dans le journal des événements de l'application Microsoft Windows.
+ Le **fichier exécutable de Database Mail** – `DatabaseMail.exe` lit le contenu d'une file d'attente de la base de données `msdb` et envoie les e-mails.

RDS prend en charge Database Mail pour toutes les versions de SQL Server sur les éditions Web, Standard et Enterprise.

## Limitations
<a name="SQLServer.DBMail.Limitations"></a>

Les limites suivantes s'appliquent à l'utilisation de Database Mail sur votre instance de base de données SQL Server :
+ Database Mail n'est pas pris en charge pour SQL Server Express Edition.
+ La modification des paramètres de configuration de Database Mail n'est pas prise en charge. Pour afficher les valeurs prédéfinies (par défaut), vous devez utiliser la procédure stockée [sysmail\$1help\$1configure\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-help-configure-sp-transact-sql).
+ Les pièces jointes ne sont pas entièrement prises en charge. Pour plus d'informations, consultez [Utilisation de pièces jointes](#SQLServer.DBMail.Files).
+ La taille maximale des pièces jointes est de 1 Mo.
+ Database Mail requiert une configuration supplémentaire sur les instances de base de données multi-AZ. Pour plus d'informations, consultez [Considérations sur les déploiements multi-AZ](#SQLServer.DBMail.MAZ).
+ La configuration de SQL Server Agent pour envoyer des e-mails à des opérateurs prédéfinis n'est pas prise en charge.

# Activation de Database Mail
<a name="SQLServer.DBMail.Enable"></a>

Procédez comme suit pour activer Database Mail sur votre instance de base de données :

1. Créez un groupe de paramètres.

1. Modifiez le groupe de paramètres de manière à définir le paramètre `database mail xps` sur 1.

1. Associez le groupe de paramètres à l'instance de base de données.

## Création du groupe de paramètres pour Database Mail
<a name="DBMail.CreateParamGroup"></a>

Créez un groupe de paramètres pour le paramètre `database mail xps` qui correspond à l'édition et à la version de SQL Server utilisées par votre instance de base de données.

**Note**  
Vous pouvez également modifier un groupe de paramètres existant. Suivez la procédure décrite dans [Modification du paramètre qui active Database Mail](#DBMail.ModifyParamGroup).

### Console
<a name="DBMail.CreateParamGroup.Console"></a>

L'exemple suivant crée un groupe de paramètres pour SQL Server Standard Edition 2016.

**Pour créer le groupe de paramètres**

1. Connectez-vous à la console Amazon RDS AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)l'adresse.

1. Dans le panneau de navigation, choisissez **Groupes de paramètres**.

1. Choisissez **Créer un groupe de paramètres**.

1. Dans le volet **Créer un groupe de paramètres**, faites ce qui suit :

   1. Pour **Famille de groupes de paramètres**, choisissez **sqlserver-se-13.0**.

   1. Pour **Nom du groupe**, saisissez un identifiant pour le groupe de paramètres, tel que **dbmail-sqlserver-se-13**.

   1. Pour **Description**, saisissez **Database Mail XPs**.

1. Choisissez **Créer**.

### INTERFACE DE LIGNE DE COMMANDE (CLI)
<a name="DBMail.CreateParamGroup.CLI"></a>

L'exemple suivant crée un groupe de paramètres pour SQL Server Standard Edition 2016.

**Pour créer le groupe de paramètres**
+ Utilisez l’une des commandes suivantes.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "Database Mail XPs"
  ```

  Pour Windows :

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "Database Mail XPs"
  ```

## Modification du paramètre qui active Database Mail
<a name="DBMail.ModifyParamGroup"></a>

Modifiez le paramètre `database mail xps` dans le groupe de paramètres qui correspond à l'édition et à la version de SQL Server utilisées par votre instance de base de données.

Pour activer Database Mail, définissez le paramètre `database mail xps` sur 1.

### Console
<a name="DBMail.ModifyParamGroup.Console"></a>

L'exemple suivant modifie le groupe de paramètres que vous avez créé pour SQL Server Standard Edition 2016.

**Pour modifier le groupe de paramètres**

1. Connectez-vous à la console Amazon RDS AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)l'adresse.

1. Dans le panneau de navigation, choisissez **Groupes de paramètres**.

1. Choisissez le groupe de paramètres, par exemple **dbmail-sqlserver-se-13**.

1. Sous **Paramètres**, filtrez la liste des paramètres pour **mail**.

1. Choisissez **database mail xps**.

1. Choisissez **Modifier les paramètres**.

1. Saisissez **1**.

1. Sélectionnez **Enregistrer les modifications**.

### INTERFACE DE LIGNE DE COMMANDE (CLI)
<a name="DBMail.ModifyParamGroup.CLI"></a>

L'exemple suivant modifie le groupe de paramètres que vous avez créé pour SQL Server Standard Edition 2016.

**Pour modifier le groupe de paramètres**
+ Utilisez l’une des commandes suivantes.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --parameters "ParameterName='database mail xps',ParameterValue=1,ApplyMethod=immediate"
  ```

  Pour Windows :

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --parameters "ParameterName='database mail xps',ParameterValue=1,ApplyMethod=immediate"
  ```

## Association du groupe de paramètres à l'instance de base de données
<a name="DBMail.AssocParamGroup"></a>

Vous pouvez utiliser le AWS Management Console ou le AWS CLI pour associer le groupe de paramètres Database Mail à l'instance de base de données.

### Console
<a name="DBMail.AssocParamGroup.Console"></a>

Vous pouvez associer le groupe de paramètres Database Mail à une instance de base de données nouvelle ou existante.
+ Pour une nouvelle instance de base de données, associez-la lorsque vous lancez l'instance. Pour plus d'informations, consultez [Création d'une instance de base de données Amazon RDS](USER_CreateDBInstance.md).
+ Pour une instance de base de données existante, associez-la en modifiant l'instance. Pour de plus amples informations, veuillez consulter [Modification d'une instance de base de données Amazon RDS](Overview.DBInstance.Modifying.md).

### INTERFACE DE LIGNE DE COMMANDE (CLI)
<a name="DBMail.AssocParamGroup.CLI"></a>

Vous pouvez associer le groupe de paramètres Database Mail à une instance de base de données nouvelle ou existante.

**Pour créer une instance de base de données avec le groupe de paramètres Database Mail**
+ Spécifiez le type de moteur de base de données et la version majeure utilisés lors de la création du groupe de paramètres.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li
      --db-parameter-group-name dbmail-sqlserver-se-13
  ```

  Pour Windows :

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --db-parameter-group-name dbmail-sqlserver-se-13
  ```

**Pour modifier une instance de base de données et associer le groupe de paramètres Database Mail**
+ Utilisez l’une des commandes suivantes.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mydbinstance \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --apply-immediately
  ```

  Pour Windows :

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --apply-immediately
  ```

# Configuration de Database Mail
<a name="SQLServer.DBMail.Configure"></a>

Pour configurer Database Mail, procédez comme suit :

1. Créez le profil Database Mail.

1. Créez le compte Database Mail.

1. Ajoutez le compte Database Mail au profil Database Mail.

1. Ajoutez des utilisateurs au profil Database Mail.

**Note**  
Pour configurer Database Mail, assurez-vous que vous disposez des autorisations `execute` requises sur les procédures stockées de la base de données `msdb`.

## Création du profil Database Mail
<a name="SQLServer.DBMail.Configure.Profile"></a>

Pour créer le profil Database Mail, vous devez utiliser la procédure stockée [sysmail\$1add\$1profile\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-profile-sp-transact-sql). L'exemple suivant crée un profil nommé `Notifications`.

**Pour créer le profil**
+ Utilisez l'instruction SQL suivante.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_profile_sp  
      @profile_name         = 'Notifications',  
      @description          = 'Profile used for sending outgoing notifications using Amazon SES.';
  GO
  ```

## Création du compte Database Mail
<a name="SQLServer.DBMail.Configure.Account"></a>

Pour créer le compte Database Mail, vous devez utiliser la procédure stockée [sysmail\$1add\$1account\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-account-sp-transact-sql). L'exemple suivant crée un compte nommé `SES` sur une instance de base de données RDS for SQL Server dans un VPC privé, à l'aide d'Amazon Simple Email Service.

L'utilisation d'Amazon SES nécessite les paramètres suivants :
+ `@email_address` – Une identité vérifiée par Amazon SES. Pour plus d'informations, consultez [Identités vérifiées dans Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html).
+ `@mailserver_name` – Un point de terminaison SMTP Amazon SES. Pour plus d'informations, consultez [Connexion à un point de terminaison SMTP Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/smtp-connect.html).
+ `@username` – Un nom d'utilisateur SMTP Amazon SES. Pour plus d'informations, consultez [Obtention des informations d'identification SMTP Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html).

  N'utilisez pas de nom d' Gestion des identités et des accès AWS utilisateur.
+ `@password` – Un mot de passe SMTP Amazon SES. Pour plus d'informations, consultez [Obtention des informations d'identification SMTP Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html).

**Pour créer le compte**
+ Utilisez l'instruction SQL suivante.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_account_sp
      @account_name        = 'SES',
      @description         = 'Mail account for sending outgoing notifications.',
      @email_address       = 'nobody@example.com',
      @display_name        = 'Automated Mailer',
      @mailserver_name     = 'vpce-0a1b2c3d4e5f-01234567.email-smtp.us-west-2.vpce.amazonaws.com',
      @port                = 587,
      @enable_ssl          = 1,
      @username            = 'Smtp_Username',
      @password            = 'Smtp_Password';
  GO
  ```
**Note**  
Spécifiez des informations d'identification autres que celles affichées ici, en tant que bonne pratique de sécurité.

## Ajout du compte Database Mail au profil Database Mail
<a name="SQLServer.DBMail.Configure.AddAccount"></a>

Pour ajouter le compte Database Mail au profil Database Mail, vous devez utiliser la procédure stockée [sysmail\$1add\$1profileaccount\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-profileaccount-sp-transact-sql). L'exemple suivant ajoute le compte `SES` au profil `Notifications`.

**Pour ajouter le compte au profil**
+ Utilisez l'instruction SQL suivante.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
      @profile_name        = 'Notifications',
      @account_name        = 'SES',
      @sequence_number     = 1;
  GO
  ```

## Ajout d'utilisateurs au profil Database Mail
<a name="SQLServer.DBMail.Configure.AddUser"></a>

Pour autoriser un principal de base de données `msdb` à utiliser un profil Database Mail, vous devez utiliser la procédure stockée [sysmail\$1add\$1principalprofile\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-principalprofile-sp-transact-sql). Un *principal* est une entité qui peut demander des ressources SQL Server. Le principal de la base de données doit correspondre à un utilisateur de l'authentification SQL Server, à un utilisateur de l'authentification Windows ou à un groupe de l'authentification Windows.

L'exemple suivant accorde un accès public au profil `Notifications`.

**Pour ajouter un utilisateur au profil**
+ Utilisez l'instruction SQL suivante.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_principalprofile_sp  
      @profile_name       = 'Notifications',  
      @principal_name     = 'public',  
      @is_default         = 1;
  GO
  ```

## Fonctions et procédures stockées Amazon RDS pour Database Mail
<a name="SQLServer.DBMail.StoredProc"></a>

Microsoft fournit des [procédures stockées](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/database-mail-stored-procedures-transact-sql) pour utiliser Database Mail, comme la création, la présentation en listes, la mise à jour et la suppression de comptes et de profils. En outre, RDS fournit les fonctions et procédures stockées Database Mail présentées dans le tableau suivant.


| Procédure/Fonction | Description | 
| --- | --- | 
| rds\$1fn\$1sysmail\$1allitems | Affiche les messages envoyés, y compris ceux envoyés par d'autres utilisateurs. | 
| rds\$1fn\$1sysmail\$1event\$1log | Affiche les événements, y compris ceux des messages envoyés par d'autres utilisateurs. | 
| rds\$1fn\$1sysmail\$1mailattachments | Affiche les pièces jointes, y compris celles des messages envoyés par d'autres utilisateurs. | 
| rds\$1sysmail\$1control | Lance et arrête la file d'attente de la messagerie (processus DatabaseMail.exe). | 
| rds\$1sysmail\$1delete\$1mailitems\$1sp | Supprime des tables internes de Database Mail les e-mails envoyés par l'ensemble des utilisateurs. | 

# Envoi d'e-mails à l'aide de Database Mail
<a name="SQLServer.DBMail.Send"></a>

Pour envoyer des e-mails à l'aide de Database Mail, vous devez utiliser la procédure stockée [sp\$1send\$1dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql).

## Usage
<a name="SQLServer.DBMail.Send.Usage"></a>

```
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile_name',
@recipients = 'recipient1@example.com[; recipient2; ... recipientn]',
@subject = 'subject',
@body = 'message_body',
[@body_format = 'HTML'],
[@file_attachments = 'file_path1; file_path2; ... file_pathn'],
[@query = 'SQL_query'],
[@attach_query_result_as_file = 0|1]';
```

Les paramètres suivants sont obligatoires :
+ `@profile_name` – Nom du profil Database Mail à partir duquel envoyer le message doit être envoyé.
+ `@recipients` – Liste des adresses e-mail, délimitées par des points-virgules, auxquelles le message doit être envoyé.
+ `@subject` – Objet du message.
+ `@body` – Corps du message. Vous pouvez également utiliser une variable déclarée comme corps.

Les paramètres suivants sont facultatifs :
+ `@body_format` – Ce paramètre est utilisé avec une variable déclarée pour envoyer un e-mail au format HTML.
+ `@file_attachments` – Liste des pièces jointes de message délimitées par des points-virgules. Les chemins d'accès aux fichiers doivent être des chemins absolus.
+ `@query` – Requête SQL à exécuter. Les résultats de la requête peuvent être joints sous forme de fichier ou inclus dans le corps du message.
+ `@attach_query_result_as_file` – Permet d'indiquer si les résultats de la requête doivent être joints sous forme de fichier. À définir sur 0 pour si la réponse est négative et sur 1 si elle est positive. La valeur par défaut est 0.

## Exemples
<a name="SQLServer.DBMail.Send.Examples"></a>

Les exemples suivants montrent comment envoyer des e-mails.

**Example envoi d'un message à un seul destinataire**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Automated DBMail message - 1',
     @body               = 'Database Mail configuration was successful.';
GO
```

**Example envoi d'un message à plusieurs destinataires**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'recipient1@example.com;recipient2@example.com',
     @subject            = 'Automated DBMail message - 2',
     @body               = 'This is a message.';
GO
```

**Example envoi d'un résultat de requête SQL sous forme de pièce jointe**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Test SQL query',
     @body               = 'This is a SQL query test.',
     @query              = 'SELECT * FROM abc.dbo.test',
     @attach_query_result_as_file = 1;
GO
```

**Example envoi d'un message au format HTML**  

```
USE msdb
GO

DECLARE @HTML_Body as NVARCHAR(500) = 'Hi, <h4> Heading </h4> </br> See the report. <b> Regards </b>';

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Test HTML message',
     @body               = @HTML_Body,
     @body_format        = 'HTML';
GO
```

**Example envoi d'un message à l'aide d'un déclencheur lorsqu'un événement spécifique se produit dans la base de données**  

```
USE AdventureWorks2017
GO
IF OBJECT_ID ('Production.iProductNotification', 'TR') IS NOT NULL
DROP TRIGGER Purchasing.iProductNotification
GO

CREATE TRIGGER iProductNotification ON Production.Product
   FOR INSERT
   AS
   DECLARE @ProductInformation nvarchar(255);
   SELECT
   @ProductInformation = 'A new product, ' + Name + ', is now available for $' + CAST(StandardCost AS nvarchar(20)) + '!'
   FROM INSERTED i;

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'New product information',
     @body               = @ProductInformation;
GO
```

# Affichage des messages, des journaux et des pièces jointes
<a name="SQLServer.DBMail.View"></a>

Pour afficher les messages, les journaux d'événements et les pièces jointes, vous devez utiliser des procédures stockées RDS.

**Pour afficher tous les e-mails**
+ Utilisez la requête SQL suivante.

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_allitems(); --WHERE sent_status='sent' or 'failed' or 'unsent'
  ```

**Pour afficher les journaux d'événements des tous les e-mails**
+ Utilisez la requête SQL suivante.

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_event_log();
  ```

**Pour afficher toutes les pièces jointes**
+ Utilisez la requête SQL suivante.

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_mailattachments();
  ```

# Suppression de messages
<a name="SQLServer.DBMail.Delete"></a>

Pour supprimer des messages, vous devez utiliser la procédure stockée `rds_sysmail_delete_mailitems_sp`.

**Note**  
RDS supprime automatiquement les éléments des tables de messagerie lorsque les données d'historique de Database Mail atteignent 1 Go, avec une période de conservation d'au moins 24 heures.  
Si vous souhaitez conserver les éléments plus longtemps, vous pouvez les archiver. Pour plus d'informations, consultez [Créer un travail SQL Server Agent pour archiver les messages et les journaux d'événements de Database Mail](https://docs.microsoft.com/en-us/sql/relational-databases/database-mail/create-a-sql-server-agent-job-to-archive-database-mail-messages-and-event-logs) dans la documentation Microsoft.

**Pour supprimer tous les e-mails**
+ Utilisez l'instruction SQL suivante.

  ```
  DECLARE @GETDATE datetime
  SET @GETDATE = GETDATE();
  EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_before = @GETDATE;
  GO
  ```

**Pour supprimer tous les e-mails dotés d'un état particulier**
+ Utilisez l'instruction SQL suivante pour supprimer tous les messages qui ont échoué.

  ```
  DECLARE @GETDATE datetime
  SET @GETDATE = GETDATE();
  EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_status = 'failed';
  GO
  ```

# Démarrage et arrêt de la file d’attente de messagerie
<a name="SQLServer.DBMail.StartStop"></a>

Utilisez les instructions suivantes pour démarrer et arrêter la file d’attente de messagerie de la base de données :

**Topics**
+ [Lancement de la file d'attente de messagerie](#SQLServer.DBMail.Start)
+ [Arrêt de la file d'attente de messagerie](#SQLServer.DBMail.Stop)

## Lancement de la file d'attente de messagerie
<a name="SQLServer.DBMail.Start"></a>

Pour lancer le processus Database Mail, vous devez utiliser la procédure stockée `rds_sysmail_control`.

**Note**  
L'activation de Database Mail lance automatiquement la file d'attente de messagerie.

**Pour lancer la file d'attente de messagerie**
+ Utilisez l'instruction SQL suivante.

  ```
  EXECUTE msdb.dbo.rds_sysmail_control start;
  GO
  ```

## Arrêt de la file d'attente de messagerie
<a name="SQLServer.DBMail.Stop"></a>

Pour arrêter le processus Database Mail, vous devez utiliser la procédure stockée `rds_sysmail_control`.

**Pour arrêter la file d'attente de messagerie**
+ Utilisez l'instruction SQL suivante.

  ```
  EXECUTE msdb.dbo.rds_sysmail_control stop;
  GO
  ```

## Utilisation de pièces jointes
<a name="SQLServer.DBMail.Files"></a>

Les extensions de pièces jointes suivantes ne sont pas prises en charge dans les messages Database Mail à partir de RDS sur SQL Server : .ade, .adp, .apk, .appx, .appxbundle, .bat, .bak, .cab, .chm, .cmd, .com, .cpl, .dll, .dmg, .exe, .hta, .inf1, .ins, .isp, .iso, .jar, .job, .js, .jse, .ldf, .lib, .lnk, .mde, .mdf, .msc, .msi, .msix, .msixbundle, .msp, .mst, .nsh, .pif, .ps, .ps1, .psc1, .reg, .rgs, .scr, .sct, .shb, .shs, .svg, .sys, .u3p, .vb, .vbe, .vbs, .vbscript, .vxd, .ws, .wsc, .wsf et .wsh.

Database Mail utilise le contexte de sécurité Microsoft Windows de l'utilisateur actuel pour contrôler l'accès aux fichiers. Les utilisateurs qui se connectent avec l'authentification SQL Server ne peuvent pas joindre de fichiers à l'aide du paramètre `@file_attachments` avec la procédure stockée `sp_send_dbmail`. Windows n'autorise pas SQL Server à fournir des informations d'identification d'un ordinateur distant à un autre ordinateur distant. Par conséquent, Database Mail ne peut pas joindre des fichiers provenant d'un partage réseau lorsque la commande est exécutée à partir d'un ordinateur autre que celui qui exécute SQL Server.

Vous pouvez toutefois utiliser des tâches SQL Server Agent pour joindre des fichiers. Pour plus d'informations sur SQL Server Agent, consultez [Utilisation de SQL Server Agent pour Amazon RDS](Appendix.SQLServer.CommonDBATasks.Agent.md) et [SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/sql-server-agent) dans la documentation Microsoft.

## Considérations sur les déploiements multi-AZ
<a name="SQLServer.DBMail.MAZ"></a>

Lorsque vous configurez Database Mail sur une instance de base de données multi-AZ, la configuration n'est pas automatiquement propagée vers la zone secondaire. Nous vous recommandons de convertir l'instance multi-AZ en instance mono-AZ, de configurer Database Mail, puis de reconvertir l'instance de base de données en instance multi-AZ. Les nœuds principal et secondaire disposeront ensuite de la configuration de Database Mail.

Si vous créez un réplica en lecture à partir de l'instance multi-AZ sur laquelle Database Mail est configuré, le réplica hérite de la configuration, mais sans le mot de passe du serveur SMTP. Mettez à jour le compte Database Mail avec le mot de passe.

## Suppression de la restriction SMTP (port 25)
<a name="SQLServer.DBMail.SMTP"></a>

AWS bloque par défaut le trafic sortant sur SMTP (port 25) pour les instances de base de données RDS for SQL Server. Cela permet d’éviter le spam en fonction des politiques du propriétaire de l’interface réseau Elastic. Vous pouvez supprimer cette restriction si nécessaire. Pour plus d’informations, consultez [Comment supprimer la restriction du port 25 à partir de mon instance Amazon EC2 ou de ma fonction Lambda ?](https://repost.aws/knowledge-center/ec2-port-25-throttle). 

# Prise en charge du stockage d'instance pour la base de données tempdb sur Amazon RDS for SQL Server
<a name="SQLServer.InstanceStore"></a>

Un *stockage d'instance* fournit un stockage temporaire de niveau bloc pour votre instance de base de données. Le stockage réside sur les disques physiquement attachés à l'ordinateur hôte. Ces disques disposent d'un stockage d'instance NVMe (Non-Volatile Memory Express) basé sur des disques SSD. Ce stockage est optimisé pour une faible latence, des hautes performances d'I/O aléatoires et un débit de lecture séquentielle élevé.

En plaçant des fichiers de données `tempdb` et des fichiers journaux `tempdb` sur le stockage d'instance, vous pouvez réduire les latences de lecture et d'écriture par rapport au stockage standard basé sur Amazon EBS.

**Note**  
Les fichiers de base de données et les fichiers journaux de base de données SQL Server ne sont pas placés dans le stockage d'instance.

## Activation du stockage d'instance
<a name="SQLServer.InstanceStore.Enable"></a>

Lorsque RDS met en service des instances de base de données avec l'une des classes d'instance suivantes, la base de données `tempdb` est automatiquement placée dans le stockage d'instance :
+ db.m5d
+ db.r5d
+ db.x2iedn

Pour activer le stockage d'instance, effectuez l'une des opérations suivantes :
+ Créez une instance de base de données SQL Server à l'aide de l'un de ces types d'instance. Pour plus d'informations, consultez [Création d'une instance de base de données Amazon RDS](USER_CreateDBInstance.md).
+ Modifiez une instance de base de données SQL Server existante pour utiliser l'une d'elles. Pour plus d'informations, consultez [Modification d'une instance de base de données Amazon RDS](Overview.DBInstance.Modifying.md).

Le stockage d'instance est disponible dans toutes les régions AWS où un ou plusieurs de ces classes d'instance sont prises en charge. Pour plus d'informations sur les classes d'instance `db.m5d` et `db.r5d`, reportez-vous à la section [Classes d'instances de base de données ](Concepts.DBInstanceClass.md). Pour plus d'informations sur les classes d'instance prises en charge par Amazon RDS pour SQL Server, reportez-vous à la section [Prise en charge de la classe d'instance de base de données pour Microsoft SQL Server](SQLServer.Concepts.General.InstanceClasses.md).

## Considérations relatives à l'emplacement et à la taille des fichiers
<a name="SQLServer.InstanceStore.Files"></a>

Sur les instances sans stockage d'instance, RDS stocke les fichiers de données et les fichiers journaux `tempdb` dans le répertoire `D:\rdsdbdata\DATA`. Les deux fichiers commencent à 8 Mo par défaut.

Sur les instances avec un stockage d'instance, RDS stocke les fichiers de données et les fichiers journaux `tempdb` dans le répertoire `T:\rdsdbdata\DATA`.

Quand `tempdb` n'a qu'un seul fichier de données (`tempdb.mdf`) et un seul fichier journal (`templog.ldf`), `templog.ldf` commence à 8 Mo par défaut et `tempdb.mdf` commence à 80 % ou plus de la capacité de stockage de l'instance. Vingt pour cent de la capacité de stockage ou 200 Go, selon le moins élevé des deux, est gardé libre pour le démarrage. Des fichiers de données `tempdb` multiples partagent 80 % de l'espace disque uniformément, tandis que les fichiers journaux ont toujours une taille initiale de 8 Mo.

Par exemple, si vous modifiez votre classe d'instance de base de données de `db.m5.2xlarge` à `db.m5d.2xlarge` , la taille des fichiers de données `tempdb` passe de 8 Mo chacun à 234 Go au total.

**Note**  
En plus des fichiers de données et des fichiers journaux `tempdb` dans le magasin d'instance (`T:\rdsdbdata\DATA`), vous pouvez continuer de créer des fichiers de données et des fichiers journaux `tempdb` sur le volume de données (`D:\rdsdbdata\DATA`). Ces fichiers ont toujours une taille initiale de 8 Mo.

## Considérations relatives à la sauvegarde
<a name="SQLServer.InstanceStore.Backups"></a>

Vous devrez peut-être conserver les sauvegardes pendant longtemps, ce qui entraîne des coûts au fil du temps. Les blocs de données et de journaux de `tempdb` peuvent changer très souvent en fonction de la charge de travail. Cela peut augmenter considérablement la taille de l'instantané de base de données.

Lorsque `tempdb` est sur le stockage d'instance, les instantanés n'incluent pas de fichiers temporaires. Cela signifie que les tailles d'instantanés sont plus petites et consomment moins de l'allocation de sauvegarde libre par rapport au stockage EBS uniquement.

## Erreurs de disque plein
<a name="SQLServer.InstanceStore.DiskFull"></a>

Si vous utilisez tout l'espace disponible dans le stockage d'instance, vous pourriez recevoir des erreurs comme celles-ci :
+ The transaction log for database 'tempdb' is full due to 'ACTIVE\$1TRANSACTION' (Le journal des transactions pour la base de données 'tempdb' est plein en raison de 'ACTIVE\$1TRANSACTION').
+ Could not allocate space for object 'dbo.SORT temporary run storage: 140738941419520' in database 'tempdb' because the 'PRIMARY' filegroup is full (Impossible d'allouer de l'espace pour l'objet 'dbo.SORT temporary run storage: 140738941419520' dans la base de données 'tempdb' car le groupe de fichiers 'PRIMARY' est plein. Créez de l'espace disque en supprimant des fichiers inutiles, en supprimant des objets dans le groupe de fichiers, en ajoutant des fichiers supplémentaires au groupe de fichiers ou en réglant la croissance automatique pour les fichiers existants du groupe de fichiers.

Vous pouvez effectuer une ou plusieurs des opérations suivantes lorsque le stockage d'instance est plein :
+ Ajustez votre charge de travail ou votre façon d'utiliser `tempdb`.
+ Mise à l'échelle pour utiliser une classe d'instance de base de données avec plus de stockage NVMe.
+ Arrêtez d'utiliser le stockage d'instance et utilisez une classe d'instance avec un stockage EBS uniquement.
+ Utilisez un mode mixte en ajoutant des données secondaires ou des fichiers journaux pour `tempdb` sur le volume EBS.

## Suppression du stockage d'instance
<a name="SQLServer.InstanceStore.Disable"></a>

Pour supprimer le stockage d'instances, modifiez votre instance de base de données SQL Server de sorte qu'elle utilise un type d'instance qui ne prend pas en charge le stockage d'instances, tel que db.m5, db.r5 ou db.x1e.

**Note**  
Lorsque vous supprimez le stockage d'instance, les fichiers temporaires sont déplacés vers le répertoire `D:\rdsdbdata\DATA` et leur taille est réduite à 8 Mo.

# Utilisation d'événements étendus avec Amazon RDS for Microsoft SQL Server
<a name="SQLServer.ExtendedEvents"></a>

Vous pouvez utiliser des événements étendus dans Microsoft SQL Server pour capturer des informations de débogage et de dépannage pour Amazon RDS for SQL Server. Les événements étendus remplacent SQL Trace et Server Profiler, qui ont été rendus obsolètes par Microsoft. Les événements étendus sont similaires aux traces du profileur, mais avec un contrôle plus granulaire sur les événements suivis. Les événements étendus sont pris en charge pour SQL Server versions 2016 et ultérieures sur Amazon RDS. Pour plus d'informations, consultez [Présentation des événements étendus](https://docs.microsoft.com/en-us/sql/relational-databases/extended-events/extended-events) dans la documentation Microsoft.

Les événements étendus sont activés automatiquement pour les utilisateurs disposant de privilèges d'utilisateur principal dans Amazon RDS for SQL Server.

**Topics**
+ [Limitations et recommandations](#SQLServer.ExtendedEvents.Limits)
+ [Configuration d'événements étendus sur RDS for SQL Server](#SQLServer.ExtendedEvents.Config)
+ [Considérations sur les déploiements multi-AZ](#SQLServer.ExtendedEvents.MAZ)
+ [Interrogation de fichiers d'événements étendus](#SQLServer.ExtendedEvents.Querying)

## Limitations et recommandations
<a name="SQLServer.ExtendedEvents.Limits"></a>

Lorsque vous utilisez des événements étendus sur RDS for SQL Server, les limitations suivantes s'appliquent :
+ Les événements étendus ne sont pris en charge que pour les éditions Enterprise et Standard.
+ Vous ne pouvez pas modifier les sessions d'événements étendus par défaut.
+ Assurez-vous de définir le mode de partition de mémoire de session sur `NONE`.
+ Le mode de rétention d'événement de session peut être `ALLOW_SINGLE_EVENT_LOSS` ou `ALLOW_MULTIPLE_EVENT_LOSS`.
+ Les cibles ETW (Event Tracing for Windows) ne sont pas prises en charge.
+ Assurez-vous que les cibles de fichiers se trouvent dans le répertoire `D:\rdsdbdata\log`.
+ Pour les cibles correspondant aux paire, définissez la propriété `respond_to_memory_pressure` sur `1`.
+ La mémoire cible de la mémoire tampon Ring ne peut pas être supérieure à 4 Mo.
+ Les actions suivantes ne sont pas prises en charge :
  + `debug_break`
  + `create_dump_all_threads`
  + `create_dump_single_threads`
+ L'événement `rpc_completed` est pris en charge sur les versions suivantes et ultérieures : 15.0.4083.2, 14.0.3370.1, 13.0.5865.1, 12.0.6433.1, 11.0.7507.2.

## Configuration d'événements étendus sur RDS for SQL Server
<a name="SQLServer.ExtendedEvents.Config"></a>

Sur RDS for SQL Server, vous pouvez configurer les valeurs de certains paramètres des sessions d'événements étendus. Le tableau suivant décrit les paramètres configurables.


| Nom du paramètre | Description | Valeur par défaut RDS | Valeur minimale | Valeur maximale | 
| --- | --- | --- | --- | --- | 
| xe\$1session\$1max\$1memory | Spécifie la quantité maximale de mémoire à allouer à la session pour la mise en mémoire tampon des événements. Cette valeur correspond au paramètre max\$1memory de la session d'événement. | 4 Mo | 4 Mo | 8 Mo | 
| xe\$1session\$1max\$1event\$1size | Spécifie la taille de mémoire maximale autorisée pour les événements volumineux. Cette valeur correspond au paramètre max\$1event\$1size de la session d'événement. | 4 Mo | 4 Mo | 8 Mo | 
| xe\$1session\$1max\$1dispatch\$1latency | Spécifie la durée pendant laquelle les événements sont mis en mémoire tampon avant d'être distribués aux cibles de session d'événements étendus. Cette valeur correspond au paramètre max\$1dispatch\$1latency de la session d'événement. | 30 secondes | 1 seconde | 30 secondes | 
| xe\$1file\$1target\$1size | Spécifie la taille maximale de la cible du fichier. Cette valeur correspond au paramètre max\$1file\$1size de la cible du fichier. | 100 Mo | 10 Mo | 1 Go | 
| xe\$1file\$1retention | Spécifie la durée de conservation en jours pour les fichiers générés par les cibles de fichiers des sessions d'événements. | 7 jours | 0 jour | 7 jours | 

**Note**  
La définition de `xe_file_retention` sur zéro entraîne la suppression automatique des fichiers .xel après la libération du verrouillage sur ces fichiers par SQL Server. Le verrouillage est libéré chaque fois qu'un fichier .xel atteint la limite de taille définie dans `xe_file_target_size`.

Vous pouvez utiliser la procédure `rdsadmin.dbo.rds_show_configuration` stockée pour afficher les valeurs actuelles de ces paramètres. Par exemple, utilisez l'instruction SQL suivante pour afficher le réglage actuel de `xe_session_max_memory`.

```
exec rdsadmin.dbo.rds_show_configuration 'xe_session_max_memory'
```

Vous pouvez utiliser la procédure stockée `rdsadmin.dbo.rds_set_configuration` pour les modifier. Par exemple, utilisez l'instruction SQL suivante pour définir `xe_session_max_memory` sur 4 Mo.

```
exec rdsadmin.dbo.rds_set_configuration 'xe_session_max_memory', 4
```

## Considérations sur les déploiements multi-AZ
<a name="SQLServer.ExtendedEvents.MAZ"></a>

Lorsque vous créez une session d'événements étendus sur une instance de base de données principale, elle ne se propage pas au réplica de secours. Vous pouvez basculer et créer la session d'événements étendus sur la nouvelle instance de base de données principale. Vous pouvez également supprimer et lire la configuration multi-AZ pour propager la session d'événements étendus au réplica de secours. RDS arrête toutes les sessions d'événements étendus personnalisées sur le réplica de secours, de sorte que ces sessions ne consomment pas de ressources sur le réplica de secours. Pour cette raison, après qu'un réplica de secours devient l'instance de base de données principale, veillez à démarrer manuellement les sessions d'événements étendus sur la nouvelle instance principale.

**Note**  
Cette approche s'applique aux groupes de disponibilité Always On et à la mise en miroir de bases de données.

Vous pouvez également utiliser un travail SQL Server Agent pour suivre le réplica de secours et démarrer les sessions si le réplica de secours devient le réplica principal. Par exemple, utilisez la requête suivante dans votre étape du travail SQL Server Agent pour redémarrer les sessions d'événements sur une instance de base de données principale.

```
BEGIN
    IF (DATABASEPROPERTYEX('rdsadmin','Updateability')='READ_WRITE'
    AND DATABASEPROPERTYEX('rdsadmin','status')='ONLINE'
    AND (DATABASEPROPERTYEX('rdsadmin','Collation') IS NOT NULL OR DATABASEPROPERTYEX('rdsadmin','IsAutoClose')=1)
    )
    BEGIN
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe1')
            ALTER EVENT SESSION xe1 ON SERVER STATE=START
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe2')
            ALTER EVENT SESSION xe2 ON SERVER STATE=START
    END
END
```

Cette requête redémarre les sessions d'événements `xe1` et `xe2` sur une instance de base de données principale si ces sessions sont à l'état arrêté. Vous pouvez également ajouter une planification avec un intervalle pratique à cette requête.

## Interrogation de fichiers d'événements étendus
<a name="SQLServer.ExtendedEvents.Querying"></a>

Vous pouvez utiliser SQL Server Management Studio ou la fonction `sys.fn_xe_file_target_read_file` pour afficher les données des événements étendus qui utilisent des cibles de fichiers. Pour plus d'informations sur cette fonction, consultez [sys.fn\$1xe\$1file\$1target\$1read\$1file (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/sys-fn-xe-file-target-read-file-transact-sql) dans la documentation Microsoft.

Les cibles de fichiers d'événements étendus peuvent uniquement écrire des fichiers dans le répertoire `D:\rdsdbdata\log` sur RDS SQL Server.

À titre d'exemple, utilisez la requête SQL suivante pour répertorier le contenu de tous les fichiers des sessions d'événements étendus dont les noms commencent par `xe`.

```
SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);
```

# Accès aux sauvegardes des journaux de transactions avec RDS for SQL Server
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess"></a>

Avec accès aux sauvegardes des journaux de transactions pour RDS for SQL Server, vous pouvez répertorier les fichiers de sauvegarde des journaux de transactions pour une base de données et les copier dans un compartiment Amazon S3 cible. En copiant les sauvegardes des journaux de transactions dans un compartiment Amazon S3, vous pouvez les utiliser en combinaison avec des sauvegardes de base de données complètes et différentielles pour effectuer des restaurations de base de données ponctuelles. Vous utilisez les procédures stockées RDS pour configurer l'accès aux sauvegardes des journaux de transactions, répertorier les sauvegardes des journaux de transactions disponibles et les copier dans votre compartiment Amazon S3.

L'accès aux sauvegardes des journaux de transactions offre les fonctionnalités et avantages suivants :
+ Répertoriez et affichez les métadonnées des sauvegardes des journaux de transactions disponibles pour une base de données sur une instance de base de données RDS for SQL Server.
+ Copiez les sauvegardes disponibles des journaux de transactions depuis RDS for SQL Server vers un compartiment Amazon S3 cible.
+ Effectuez des point-in-time restaurations de bases de données sans avoir à restaurer une instance de base de données complète. Pour plus d'informations sur la restauration d'un cluster de bases de données à un instant dans le passé, consultez [Restauration d’une instance de base de données à un instant précis pour Amazon RDS](USER_PIT.md).

## Disponibilité et prise en charge
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Availability"></a>

L'accès aux sauvegardes du journal des transactions est pris en charge dans toutes les AWS régions. L'accès aux sauvegardes des journaux de transactions est disponible pour toutes les éditions et versions de Microsoft SQL Server prises en charge sur Amazon RDS. 

## Exigences
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements"></a>

Avant d'autoriser l'accès aux sauvegardes des journaux de transactions, les exigences suivantes doivent être satisfaites : 
+  Les sauvegardes automatisées doivent être activées sur l'instance de base de données et la conservation des sauvegardes doit être définie sur une valeur d'un ou plusieurs jours. Pour plus d'informations sur l'activation des sauvegardes automatisées et la configuration d'une politique de conservation, consultez [Activation des sauvegardes automatiques](USER_WorkingWithAutomatedBackups.Enabling.md). 
+ Un compartiment Amazon S3 doit exister dans le même compte et la même région que l'instance de base de données source. Avant d'autoriser l'accès aux sauvegardes des journaux de transactions, choisissez un compartiment Amazon S3 existant ou [créez un nouveau compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html) à utiliser pour les fichiers de sauvegarde de vos journaux de transactions.
+ Une politique d'autorisations pour les compartiments Amazon S3 doit être configurée comme suit pour permettre à Amazon RDS d'y copier des fichiers journaux de transactions :

  1. Définissez la propriété d'appartenance du compte d'objet sur le compartiment sur **Bucket Owner Preferred** (Propriétaire du compartiment préféré).

  1. Ajoutez la politique suivante. Il n'y aura pas de politique par défaut. Par conséquent, utilisez les listes de contrôle d'accès (ACL) des compartiments pour modifier la politique des compartiments et l'ajouter.

  

  L'exemple suivant utilise un ARN pour spécifier une ressource. Nous vous recommandons d’utiliser les clés de contexte de condition globale `SourceArn` et `SourceAccount` dans des relations d’approbation basées sur les ressources pour limiter les autorisations du service à une ressource spécifique. Pour plus d'informations sur l'utilisation ARNs, consultez [Amazon resource names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) et[Amazon Resource Names (ARN) dans Amazon RDS](USER_Tagging.ARN.md).

    
**Example d'une politique d'autorisations Amazon S3 pour l'accès aux sauvegardes des journaux de transactions**  

------
#### [ JSON ]

****  

  ```
      {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Only allow writes to my bucket with bucket owner full control",
              "Effect": "Allow",
              "Principal": {
                  "Service": "backups.rds.amazonaws.com"
              },
              "Action": "s3:PutObject",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/{customer_path}/*",
              "Condition": {
                  "StringEquals": {
                      "s3:x-amz-acl": "bucket-owner-full-control",
                      "aws:sourceAccount": "{customer_account}",
                      "aws:sourceArn": "{db_instance_arn}"
                  }
              }
          }
      ]
  }
  ```

------
+ Rôle Gestion des identités et des accès AWS (IAM) permettant d'accéder au compartiment Amazon S3. Si vous avez déjà un rôle IAM, vous pouvez l'utiliser. Vous pouvez choisir d'avoir un nouveau rôle IAM créé pour vous quand vous ajoutez l'option `SQLSERVER_BACKUP_RESTORE` à l'aide de la AWS Management Console. Vous pouvez également en créer un nouveau manuellement. Pour plus d'informations sur la création et la configuration d'un rôle IAM avec `SQLSERVER_BACKUP_RESTORE`, consultez [Création manuelle d'un rôle IAM pour les sauvegarde et restauration natives](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM).
+ L'option `SQLSERVER_BACKUP_RESTORE` doit être ajoutée à un groupe d'options sur votre instance de base de données. Pour plus d'informations sur l'ajout de l'option `SQLSERVER_BACKUP_RESTORE`, consultez [Prise en charge des sauvegarde et restauration natives dans SQL Server](Appendix.SQLServer.Options.BackupRestore.md).
**Note**  
Si le chiffrement du stockage est activé sur votre instance de base de données, les actions AWS KMS (KMS) et la clé doivent être fournies dans le rôle IAM fourni dans le groupe d'options de sauvegarde et de restauration natif.

  Éventuellement, si vous avez l'intention d'utiliser la procédure stockée `rds_restore_log` pour effectuer des restaurations de base de données ponctuelles, nous vous recommandons d'utiliser le même chemin Amazon S3 pour le groupe d'options de sauvegarde et de restauration natives et d'accéder aux sauvegardes des journaux de transactions. Cette méthode garantit que quand Amazon RDS assume le rôle du groupe d'options pour exécuter les fonctions de restauration des journaux, il a accès à la récupération des sauvegardes des journaux de transactions à partir du même chemin Amazon S3.
+ Si l'instance de base de données est chiffrée, quel que soit le type de chiffrement (cléAWS gérée ou clé gérée par le client), vous devez fournir une clé KMS gérée par le client dans le rôle IAM et dans la procédure `rds_tlog_backup_copy_to_S3` stockée. 

## Limitations et recommandations
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Limitations"></a>

L'accès aux sauvegardes des journaux de transactions comporte les limites et recommandations suivantes :
+  Vous pouvez répertorier et copier jusqu'aux sept derniers jours de sauvegarde des journaux de transactions pour toute instance de base de données dont la conservation des sauvegardes est configurée entre 1 et 35 jours. 
+  Le compartiment Amazon S3 utilisé pour accéder aux sauvegardes des journaux de transactions doit exister dans le même compte et la même région que l'instance de base de données source. La copie intercompte et entre régions n'est pas prise en charge. 
+  Un seul compartiment Amazon S3 peut être configuré comme cible pour y copier les sauvegardes des journaux de transactions. Vous pouvez choisir un nouveau compartiment Amazon S3 cible à l'aide de la procédure stockée `rds_tlog_copy_setup`. Pour plus d'informations sur le choix d'un nouveau compartiment Amazon S3 cible, consultez [Configuration de l'accès aux sauvegardes des journaux de transactions](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md).
+  Vous ne pouvez pas spécifier la clé KMS lorsque vous utilisez la procédure stockée `rds_tlog_backup_copy_to_S3` si votre instance RDS n'est pas activée pour le chiffrement du stockage. 
+  La copie multi-compte n'est pas prise en charge. Le rôle IAM utilisé pour la copie autorise uniquement l'accès en écriture aux compartiments Amazon S3 au sein du compte de propriétaire de l'instance de base de données. 
+  Seules deux tâches simultanées de type quelconque peuvent être exécutées sur une instance de base de données RDS for SQL Server. 
+  Une seule tâche de copie peut être exécutée à la fois pour une base de données. Si vous souhaitez copier des sauvegardes des journaux de transactions pour plusieurs bases de données sur l'instance de base de données, utilisez une tâche de copie distincte pour chaque base de données. 
+  Si vous copiez une sauvegarde des journaux de transactions qui existe déjà avec le même nom dans le compartiment Amazon S3, la sauvegarde existante des journaux de transactions sera remplacée. 
+  Vous ne pouvez exécuter que les procédures stockées qui disposent d'un accès aux sauvegardes des journaux de transactions sur l'instance de base de données principale. Vous ne pouvez pas exécuter ces procédures stockées sur un réplica en lecture RDS for SQL Server ou sur une instance secondaire d'un cluster de bases de données multi-AZ. 
+  Si l'instance de base de données RDS for SQL Server est redémarrée alors que la procédure stockée `rds_tlog_backup_copy_to_S3` est en cours d'exécution, la tâche redémarre automatiquement depuis le début quand l'instance de base de données est remise en ligne. Toutes les sauvegardes des journaux de transactions qui ont été copiées dans le compartiment Amazon S3 pendant l'exécution de la tâche avant le redémarrage seront remplacées. 
+ Les bases de données système Microsoft SQL Server et la base de données `RDSAdmin` ne peuvent pas être configurées pour accéder aux sauvegardes des journaux de transactions.
+  La copie vers des compartiments chiffrés par SSE-KMS n'est pas prise en charge. 

# Configuration de l'accès aux sauvegardes des journaux de transactions
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling"></a>

Pour configurer l'accès aux sauvegardes des journaux de transactions, complétez la liste des exigences de la section [Exigences](USER.SQLServer.AddlFeat.TransactionLogAccess.md#USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements), puis exécutez la procédure stockée `rds_tlog_copy_setup`. La procédure permettra d'accéder à la fonctionnalité de sauvegarde des journaux de transactions au niveau de l'instance de base de données. Vous n'avez pas besoin de l'exécuter pour chaque base de données individuelle sur l'instance de base de données. 

**Important**  
L'utilisateur de la base de données doit disposer du rôle `db_owner` au sein de SQL Server sur chaque base de données pour configurer et utiliser l'accès à la fonctionnalité de sauvegarde des journaux de transactions.

**Example d'utilisation :**  

```
exec msdb.dbo.rds_tlog_copy_setup
@target_s3_arn='arn:aws:s3:::amzn-s3-demo-bucket/myfolder';
```

Les paramètres suivants sont obligatoires :
+ `@target_s3_arn` : ARN du compartiment Amazon S3 cible vers lequel copier les fichiers de sauvegarde des journaux de transactions.

**Example de définition d'un compartiment cible Amazon S3 :**  

```
exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn='arn:aws:s3:::amzn-s3-demo-logging-bucket/mytestdb1';
```

Pour valider la configuration, appelez la procédure stockée `rds_show_configuration`.

**Example de validation de la configuration :**  

```
exec rdsadmin.dbo.rds_show_configuration @name='target_s3_arn_for_tlog_copy';
```

Pour modifier l'accès aux sauvegardes des journaux de transactions afin de pointer vers un autre compartiment Amazon S3, vous pouvez consulter la valeur actuelle du compartiment Amazon S3 et réexécuter la procédure stockée `rds_tlog_copy_setup` en utilisant une nouvelle valeur pour `@target_s3_arn`.

**Example d'affichage du compartiment Amazon S3 existant configuré pour accéder aux sauvegardes des journaux de transactions**  

```
exec rdsadmin.dbo.rds_show_configuration @name='target_s3_arn_for_tlog_copy';
```

**Example de mise à jour vers un nouveau compartiment Amazon S3 cible**  

```
exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn='arn:aws:s3:::amzn-s3-demo-logging-bucket1/mynewfolder';
```

# Répertorier les sauvegardes disponibles des journaux de transactions
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Listing"></a>

Avec RDS for SQL Server, les bases de données configurées pour utiliser le modèle de restauration complète et une conservation des sauvegardes d'instance de base de données définie sur un ou plusieurs jours permettent d'activer automatiquement les sauvegardes des journaux de transactions. En activant l'accès aux sauvegardes des journaux de transactions, vous pouvez copier jusqu'à sept jours de ces sauvegardes dans votre compartiment Amazon S3.

Une fois que vous avez activé l'accès aux sauvegardes des journaux de transactions, vous pouvez commencer à l'utiliser pour répertorier et copier les fichiers de sauvegarde des journaux de transactions disponibles.

**Liste des sauvegardes des journaux de transactions**

Pour répertorier toutes les sauvegardes des journaux de transactions disponibles pour une base de données individuelle, appelez la fonction `rds_fn_list_tlog_backup_metadata`. Vous pouvez utiliser une clause `ORDER BY` ou `WHERE` lorsque vous appelez la fonction.

**Example visant à répertorier et filtrer les fichiers de sauvegarde des journaux de transactions disponibles**  

```
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename');
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename') WHERE rds_backup_seq_id = 3507;
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename') WHERE backup_file_time_utc > '2022-09-15 20:44:01' ORDER BY backup_file_time_utc DESC;
```

![\[Sortie de rds_fn_list_tlog_backup_metadata\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_func.png)


La fonction `rds_fn_list_tlog_backup_metadata` renvoie la sortie suivante.


****  

| Nom de la colonne | Type de données | Description | 
| --- | --- | --- | 
| `db_name` | sysname | Nom de base de données fourni pour lequel répertorier les sauvegardes des journaux de transactions. | 
| `db_id` | int | Identifiant de base de données interne pour le paramètre d'entrée `db_name`. | 
| `family_guid` | uniqueidentifier | ID unique de la base de données d'origine à sa création. Cette valeur reste la même quand la base de données est restaurée, même avec un nom de base de données différent. | 
| `rds_backup_seq_id` | int | ID que RDS utilise en interne pour conserver un numéro de séquence pour chaque fichier de sauvegarde des journaux de transactions. | 
| `backup_file_epoch` | bigint | Heure epoch à laquelle un fichier de sauvegarde de transactions a été généré. | 
| `backup_file_time_utc` | datetime | Valeur convertie en temps UTC pour la valeur `backup_file_epoch`. | 
| `starting_lsn` | numeric(25,0) | Numéro de séquence de journal du premier ou du plus ancien enregistrement de journal d'un fichier de sauvegarde de journaux de transactions. | 
| `ending_lsn` | numeric(25,0) | Numéro de séquence de journal du dernier ou du prochain enregistrement de journal d'un fichier de sauvegarde des journaux de transactions. | 
| `is_log_chain_broken` | bit | Valeur booléenne indiquant si la chaîne de journaux est interrompue entre le fichier de sauvegarde actuel des journaux de transactions et le fichier de sauvegarde précédent des journaux de transactions. | 
| `file_size_bytes` | bigint | Taille de la sauvegarde transactionnelle définie en octets. | 
| `Error` | varchar(4000) | Message d'erreur si la fonction `rds_fn_list_tlog_backup_metadata` lève une exception. NULL en l'absence d'exceptions. | 

# Copie des sauvegardes de journaux de transactions
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying"></a>

Pour copier un ensemble de sauvegardes disponibles des journaux de transactions pour une base de données individuelle dans votre compartiment Amazon S3, appelez la procédure stockée `rds_tlog_backup_copy_to_S3`. La procédure stockée `rds_tlog_backup_copy_to_S3` lancera une nouvelle tâche pour copier les sauvegardes de journaux de transactions. 

**Note**  
La procédure stockée `rds_tlog_backup_copy_to_S3` copiera les sauvegardes de journaux de transactions sans les valider par rapport à l'attribut `is_log_chain_broken`. Pour cette raison, vous devez confirmer manuellement une chaîne de journaux ininterrompue avant d'exécuter la procédure stockée `rds_tlog_backup_copy_to_S3`. Pour une explication approfondie, consultez [Validation de la chaîne de sauvegarde des journaux de transactions](#USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain).

**Example d'utilisation de la procédure stockée `rds_tlog_backup_copy_to_S3`**  

```
exec msdb.dbo.rds_tlog_backup_copy_to_S3
	@db_name='mydatabasename',
	[@kms_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@backup_file_start_time='2022-09-01 01:00:15'],
	[@backup_file_end_time='2022-09-01 21:30:45'],
	[@starting_lsn=149000000112100001],
	[@ending_lsn=149000000120400001],
	[@rds_backup_starting_seq_id=5],
	[@rds_backup_ending_seq_id=10];
```

Les paramètres d'entrée suivants sont disponibles :


****  

| Paramètre | Description | 
| --- | --- | 
| `@db_name` | Nom de la base de données fournie pour laquelle copier les sauvegardes de journaux de transactions. | 
| `@kms_key_arn` |  Clé KMS gérée par le client. Si vous chiffrez votre instance de base de données avec une clé KMS AWS gérée, vous devez créer une clé gérée par le client. Si vous chiffrez votre instance de base de données avec une clé gérée par le client, vous pouvez utiliser le même ARN de clé KMS. | 
| `@backup_file_start_time` | Horodatage UTC tel que fourni dans la colonne `[backup_file_time_utc]` de la fonction `rds_fn_list_tlog_backup_metadata`. | 
| `@backup_file_end_time` | Horodatage UTC tel que fourni dans la colonne `[backup_file_time_utc]` de la fonction `rds_fn_list_tlog_backup_metadata`. | 
| `@starting_lsn` | Numéro de séquence de journal (LSN) tel que fourni dans la colonne `[starting_lsn]` de la fonction `rds_fn_list_tlog_backup_metadata` | 
| `@ending_lsn` | Numéro de séquence de journal (LSN) tel que fourni dans la colonne `[ending_lsn]` de la fonction `rds_fn_list_tlog_backup_metadata` | 
| `@rds_backup_starting_seq_id` | ID de séquence tel que fourni dans la colonne `[rds_backup_seq_id]` de la fonction `rds_fn_list_tlog_backup_metadata` | 
| `@rds_backup_ending_seq_id` | ID de séquence tel que fourni dans la colonne `[rds_backup_seq_id]` de la fonction `rds_fn_list_tlog_backup_metadata` | 

Vous pouvez spécifier un ensemble de paramètres d'heure, de LSN ou d'ID de séquence. Un seul ensemble de paramètres est requis.

Vous pouvez également spécifier un seul paramètre dans l'un quelconque des ensembles. Par exemple, en fournissant une valeur uniquement pour le paramètre `backup_file_end_time`, tous les fichiers de sauvegarde des journaux de transactions disponibles avant cette date, dans la limite de sept jours, seront copiés dans votre compartiment Amazon S3. 

Les combinaisons de paramètres d'entrée valides pour la procédure stockée `rds_tlog_backup_copy_to_S3` sont fournies ci-dessous.


****  

| Paramètres fournis | Résultat attendu | 
| --- | --- | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3  <br />	@db_name = 'testdb1',<br />            @backup_file_start_time='2022-08-23 00:00:00',<br />            @backup_file_end_time='2022-08-30 00:00:00';</pre>  | Copie les sauvegardes des journaux de transactions des sept derniers jours et se situe dans la plage fournie `backup_file_start_time` et `backup_file_end_time`. Dans cet exemple, la procédure stockée copiera les sauvegardes des journaux de transactions qui ont été générées entre le 23/08/2022 à 00:00:00 et le 30/08/2022 à 00:00:00.  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />           @db_name = 'testdb1',<br />           @backup_file_start_time='2022-08-23 00:00:00';</pre>  | Copie les sauvegardes des journaux de transactions des sept derniers jours et commençant à partir de la valeur `backup_file_start_time` fournie. Dans cet exemple, la procédure stockée copiera les sauvegardes des journaux de transactions depuis le 23/08/2022 à 00:00:00 jusqu'à la dernière sauvegarde des journaux de transactions.  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />          @db_name = 'testdb1',<br />          @backup_file_end_time='2022-08-30 00:00:00';</pre>  | Copie les sauvegardes des journaux de transactions des sept derniers jours jusqu'à la valeur `backup_file_end_time` fournie. Dans cet exemple, la procédure stockée copiera les sauvegardes des journaux de transactions depuis le 23/08/2022 à 00:00:00 jusqu'au 30/08/2022 à 00:00:00.  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />         @db_name='testdb1',<br />         @starting_lsn =1490000000040007,<br />         @ending_lsn =  1490000000050009;</pre>  | Copie les sauvegardes des journaux de transactions qui sont disponibles depuis les sept derniers jours et qui se situent dans la plage fournie de `starting_lsn` et `ending_lsn`. Dans cet exemple, la procédure stockée copiera les sauvegardes des journaux de transactions des sept derniers jours avec une plage LSN comprise entre 1490000000040007 et 1490000000050009.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @starting_lsn =1490000000040007;</pre>  |  Copie les sauvegardes des journaux de transactions qui sont disponibles depuis les sept derniers jours, en commençant par le paramètre `starting_lsn` fourni. Dans cet exemple, la procédure stockée copiera les sauvegardes des journaux de transactions depuis le LSN 1490000000040007 jusqu'à la dernière sauvegarde des journaux de transactions.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @ending_lsn  =1490000000050009;</pre>  |  Copie les sauvegardes des journaux de transactions qui sont disponibles depuis les sept derniers jours, jusqu'au paramètre `ending_lsn` fourni. Dans cet exemple, la procédure stockée copiera les sauvegardes des journaux de transactions commençant à partir des sept derniers jours jusqu'au LSN 1490000000050009.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />       @db_name='testdb1',<br />       @rds_backup_starting_seq_id= 2000,<br />       @rds_backup_ending_seq_id= 5000;</pre>  |  Copie les sauvegardes des journaux de transactions qui sont disponibles depuis les sept derniers jours et qui se situent dans la plage fournie de `rds_backup_starting_seq_id` à `rds_backup_ending_seq_id`. Dans cet exemple, la procédure stockée copiera les sauvegardes des journaux de transactions commençant à partir des sept derniers jours et figurant dans la plage fournie des identifiants de séquence de sauvegarde RDS, de seq\$1id 2000 à seq\$1id 5000.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />       @db_name='testdb1',<br />       @rds_backup_starting_seq_id= 2000;</pre>  |  Copie les sauvegardes des journaux de transactions qui sont disponibles depuis les sept derniers jours, en commençant par le paramètre `rds_backup_starting_seq_id` fourni. Dans cet exemple, la procédure stockée copiera les sauvegardes des journaux de transactions commençant à seq\$1id 2000 jusqu'à la dernière sauvegarde des journaux de transactions.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />      @db_name='testdb1',<br />      @rds_backup_ending_seq_id= 5000;</pre>  |  Copie les sauvegardes des journaux de transactions qui sont disponibles depuis les sept derniers jours, jusqu'au paramètre `rds_backup_ending_seq_id` fourni. Dans cet exemple, la procédure stockée copiera les sauvegardes des journaux de transactions commençant à partir des sept derniers jours, jusqu'à seq\$1id 5000.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />      @db_name='testdb1',<br />      @rds_backup_starting_seq_id= 2000;<br />      @rds_backup_ending_seq_id= 2000;</pre>  |  Copie une sauvegarde unique des journaux de transactions avec l'ID `rds_backup_starting_seq_id` fourni, si elle est disponible au cours des sept derniers jours. Dans cet exemple, la procédure stockée copiera une sauvegarde unique des journaux de transactions dont le seq\$1id est 2000, si elle existe au cours des sept derniers jours.   | 

## Validation de la chaîne de sauvegarde des journaux de transactions
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain"></a>

 La conservation automatisée des sauvegardes doit être activée pour les bases de données configurées pour l'accès aux sauvegardes des journaux de transactions. La conservation automatisée des sauvegardes définit les bases de données sur l'instance de base de données sur le modèle de récupération `FULL`. Pour prendre en charge la restauration ponctuelle d'une base de données, évitez de modifier le modèle de récupération de base de données, car cela peut entraîner une rupture de la chaîne de journaux. Nous vous recommandons de conserver la base de données configurée sur le modèle de récupération `FULL`.

Pour valider manuellement la chaîne de journaux avant de copier les sauvegardes des journaux de transactions, appelez la fonction `rds_fn_list_tlog_backup_metadata` et passez en revue les valeurs de la colonne `is_log_chain_broken`. La valeur « 1 » indique que la chaîne de journaux a été interrompue entre la sauvegarde de journaux en cours et la sauvegarde de journaux précédente.

L'exemple suivant montre une chaîne de journaux interrompue dans la sortie de la procédure stockée `rds_fn_list_tlog_backup_metadata`. 

![\[Sortie de rds_fn_list_tlog_backup_metadata montrant une chaîne de journaux interrompue.\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_logchain_error.png)


Dans une chaîne de journaux normale, la valeur du numéro de séquence de journal (LSN) pour first\$1lsn pour un identifiant rds\$1sequence\$1id donné doit correspondre à la valeur de last\$1lsn dans l'identifiant rds\$1sequence\$1id précédent. Dans l'image, un rds\$1sequence\$1id de 45 possède une valeur first\$1lsn de 90987, qui ne correspond pas à la valeur last\$1lsn de 90985 du rds\$1sequence\$1id 44 précédent.

Pour plus d'informations sur l'architecture des journaux de transactions SQL Server et les numéros de séquence de journal, consultez [Architecture logique du journal des transactions](https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-ver15#Logical_Arch) dans la documentation Microsoft SQL Server.

# Structure de dossiers et de fichiers d'un compartiment Amazon S3
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.S3namingConvention"></a>

Les sauvegardes des journaux de transactions présentent la structure standard et la convention de dénomination suivantes au sein d'un compartiment Amazon S3 :
+ Un nouveau dossier est créé sous le chemin `target_s3_arn` de chaque base de données avec la structure de dénomination `{db_id}.{family_guid}`.
+ Dans le dossier, les sauvegardes des journaux de transactions présentent la structure de noms de fichiers `{db_id}.{family_guid}.{rds_backup_seq_id}.{backup_file_epoch}`.
+ Vous pouvez afficher les détails de `family_guid,db_id,rds_backup_seq_id and backup_file_epoch` avec la fonction `rds_fn_list_tlog_backup_metadata`.

L'exemple suivant montre la structure de dossiers et de fichiers d'un ensemble de sauvegardes des journaux de transactions dans un compartiment Amazon S3.

![\[Structure de compartiments Amazon S3 avec accès aux journaux de transactions\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_s3.png)


# Suivi de l'état des tâches
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus"></a>

 Pour suivre le statut de vos tâches de copie, appelez la procédure stockée `rds_task_status`. Si vous ne fournissez pas de paramètre, la procédure stockée retourne l'état de toutes les tâches. 

**Example d'utilisation :**  

```
exec msdb.dbo.rds_task_status
  @db_name='database_name',
  @task_id=ID_number;
```

Les paramètres suivants sont facultatifs :
+ `@db_name` – Nom de la base de données pour laquelle afficher l'état de la tâche.
+ `@task_id` – ID de la tâche pour laquelle afficher l'état de tâche.

**Example visant à répertorier le statut pour un ID de tâche spécifique :**  

```
exec msdb.dbo.rds_task_status @task_id=5;
```

**Example visant à répertorier le statut pour une base de données et une tâche spécifiques :**  

```
exec msdb.dbo.rds_task_status@db_name='my_database',@task_id=5;
```

**Example visant à répertorier toutes les tâches et leur statut pour une base de données spécifique :**  

```
exec msdb.dbo.rds_task_status @db_name='my_database';
```

**Example visant à répertorier toutes les tâches et leur statut sur l'instance de base de données actuelle**  

```
exec msdb.dbo.rds_task_status;
```

# Annulation d'une tâche
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.CancelTask"></a>

Pour annuler une tâche en cours d'exécution, appelez la procédure stockée `rds_cancel_task`.

**Example d'utilisation :**  

```
exec msdb.dbo.rds_cancel_task @task_id=ID_number;
```

Les paramètres suivants sont obligatoires :
+ `@task_id` – ID de la tâche à annuler. Vous pouvez consulter l'ID de la tâche en appelant la procédure stockée `rds_task_status`.

Pour plus d'informations sur l'affichage et l'annulation des tâches en cours, 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).

# Résolution des problèmes liés à l'accès aux sauvegardes des journaux de transactions
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Troubleshooting"></a>

Les problèmes que vous pouvez rencontrer lorsque vous utilisez les procédures stockées pour accéder aux sauvegardes des journaux de transactions sont répertoriés ci-dessous.


****  

| Procédure stockée | Message d'erreur | Problème | Suggestions de dépannage | 
| --- | --- | --- | --- | 
| rds\$1tlog\$1copy\$1setup | Les sauvegardes sont désactivées sur cette instance de base de données. Activez les sauvegardes des instances de base de données avec une conservation d'au moins « 1 » et réessayez. | Les sauvegardes automatisées ne sont pas activées pour l'instance de base de données. |  La conservation des sauvegardes des instances de base de données doit être activée avec une durée de conservation d'au moins un jour. Pour plus d'informations sur l'activation des sauvegardes automatisées et la configuration de la conservation des sauvegardes, consultez [Période de rétention des sauvegardes](USER_WorkingWithAutomatedBackups.BackupRetention.md).  | 
| rds\$1tlog\$1copy\$1setup | Erreur lors de l'exécution de la procédure stockée rds\$1tlog\$1copy\$1setup. Reconnectez-vous au point de terminaison RDS et réessayez. | Une erreur interne s’est produite. | Reconnectez-vous au point de terminaison RDS et réexécutez la procédure stockée `rds_tlog_copy_setup`. | 
| rds\$1tlog\$1copy\$1setup | L'exécution de la procédure stockée rds\$1tlog\$1backup\$1copy\$1setup dans une transaction n'est pas prise en charge. Vérifiez qu'aucune transaction n'est ouverte dans la session et réessayez. | La procédure stockée a été tentée dans le cadre d'une transaction en utilisant `BEGIN` et `END`. | Évitez d'utiliser `BEGIN` et `END` lors de l'exécution de la procédure stockée `rds_tlog_copy_setup`. | 
| rds\$1tlog\$1copy\$1setup | Le nom du compartiment S3 pour le paramètre d'entrée `@target_s3_arn` doit contenir au moins un caractère autre qu'un espace.  | Une valeur incorrecte a été fournie pour le paramètre d'entrée `@target_s3_arn`. | Veillez à ce que le paramètre d'entrée `@target_s3_arn` spécifie l'ARN complet du compartiment Amazon S3. | 
| rds\$1tlog\$1copy\$1setup | L'option `SQLSERVER_BACKUP_RESTORE` n'est pas activée ou est en cours d'activation. Activez l'option ou réessayez ultérieurement.  | L'option `SQLSERVER_BACKUP_RESTORE` n'est pas activée sur l'instance de base de données ou a simplement été activée et est en attente d'une activation interne. | Activez l'option `SQLSERVER_BACKUP_RESTORE` comme indiqué dans la section Exigences. Attendez quelques minutes, puis réexécutez la procédure stockée `rds_tlog_copy_setup`. | 
| rds\$1tlog\$1copy\$1setup | L'ARN S3 cible pour le paramètre d'entrée `@target_s3_arn` ne peut pas être vide ou null.  | Une valeur `NULL` a été fournie pour le paramètre d'entrée `@target_s3_arn`, ou cette valeur n'a pas été fournie. | Veillez à ce que le paramètre d'entrée `@target_s3_arn` spécifie l'ARN complet du compartiment Amazon S3. | 
| rds\$1tlog\$1copy\$1setup | L'ARN S3 cible pour le paramètre d'entrée `@target_s3_arn` doit commencer par arn:aws.  | Le paramètre d'entrée `@target_s3_arn` a été fourni sans `arn:aws` sur le devant. | Veillez à ce que le paramètre d'entrée `@target_s3_arn` spécifie l'ARN complet du compartiment Amazon S3. | 
| rds\$1tlog\$1copy\$1setup | L'ARN S3 cible est déjà défini sur la valeur fournie.  | La procédure stockée `rds_tlog_copy_setup` s'exécutait auparavant et était configurée avec un ARN de compartiment Amazon S3. | Pour modifier la valeur du compartiment Amazon S3 afin d'accéder aux sauvegardes des journaux de transactions, fournissez un autre `target S3 ARN`. | 
| rds\$1tlog\$1copy\$1setup | Impossible de générer des informations d'identification pour activer l'accès aux sauvegardes des journaux de transactions. Confirmez le chemin S3 que l'ARN a fourni avec `rds_tlog_copy_setup` et réessayez ultérieurement.  | Une erreur non spécifiée s'est produite lors de la génération des informations d'identification pour permettre l'accès aux sauvegardes des journaux de transactions. | Passez en revue votre configuration d'installation et réessayez.  | 
| rds\$1tlog\$1copy\$1setup | Vous ne pouvez pas exécuter la procédure stockée rds\$1tlog\$1copy\$1setup tant que des tâches sont en attente. Attendez que les tâches en attente soient terminées et réessayez.  | Seules deux tâches peuvent être exécutées à la fois. Certaines tâches sont en attente d'achèvement. | Affichez les tâches en attente et attendez qu'elles se terminent. Pour plus d'informations sur la surveillance du statut des tâches, consultez [Suivi de l'état des tâches](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Une tâche de copie du fichier de sauvegarde T-log a déjà été lancée pour la base de données : %s avec l'ID de tâche : %d. Réessayez ultérieurement.  | Une seule tâche de copie peut être exécutée à la fois pour une base de données spécifiée. Une tâche de copie est en attente d'achèvement. | Affichez les tâches en attente et attendez qu'elles se terminent. Pour plus d'informations sur la surveillance du statut des tâches, consultez [Suivi de l'état des tâches](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Au moins l'un de ces trois ensembles de paramètres doit être fourni. SET-1:(@backup\$1file\$1start\$1time, @backup\$1file\$1end\$1time) \$1 SET-2:(@starting\$1lsn, @ending\$1lsn) \$1 SET-3:(@rds\$1backup\$1starting\$1seq\$1id, @rds\$1backup\$1ending\$1seq\$1id)  | Aucun de ces trois ensembles de paramètres n'a été fourni, ou un paramètre obligatoire est manquant dans un jeu de paramètres fourni. | Vous pouvez spécifier les paramètres d'heure, de LSN ou d'ID de séquence. Un de ces trois ensembles de paramètres est requis. Pour plus d'informations sur les paramètres requis, consultez [Copie des sauvegardes de journaux de transactions](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Les sauvegardes sont désactivées sur cette instance. Activez les sauvegardes et réessayez dans un certain temps. | Les sauvegardes automatisées ne sont pas activées pour l'instance de base de données. |  Pour plus d'informations sur l'activation des sauvegardes automatisées et la configuration de la conservation des sauvegardes, consultez [Période de rétention des sauvegardes](USER_WorkingWithAutomatedBackups.BackupRetention.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Impossible de trouver la base de données spécifiée %s.  | La valeur fournie pour le paramètre d'entrée `@db_name` ne correspond pas à un nom de base de données sur l'instance de base de données. | Utilisez le nom de base de données correct. Pour répertorier toutes les bases de données par nom, exécutez `SELECT * from sys.databases` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Impossible d'exécuter la procédure stockée rds\$1tlog\$1backup\$1copy\$1to\$1S3 pour les bases de données système SQL Server ou la base de données rdsadmin.  | La valeur fournie pour le paramètre d'entrée `@db_name` correspond au nom d'une base de données système SQL Server ou à la base de données RDSAdmin. | Les bases de données suivantes ne peuvent pas être utilisées pour accéder aux sauvegardes des journaux de transactions : `master, model, msdb, tempdb, RDSAdmin.`  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Le nom de la base de données pour le paramètre d'entrée @db\$1name ne peut pas être vide ou null.  | La valeur fournie pour le paramètre d'entrée `@db_name` était vide ou `NULL`. | Utilisez le nom de base de données correct. Pour répertorier toutes les bases de données par nom, exécutez `SELECT * from sys.databases` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | La période de conservation des sauvegardes des instances de base de données doit être définie sur au moins 1 pour exécuter la procédure stockée rds\$1tlog\$1backup\$1copy\$1setup.  | Les sauvegardes automatisées ne sont pas activées pour l'instance de base de données. | Pour plus d'informations sur l'activation des sauvegardes automatisées et la configuration de la conservation des sauvegardes, consultez [Période de rétention des sauvegardes](USER_WorkingWithAutomatedBackups.BackupRetention.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Erreur lors de l'exécution de la procédure stockée rds\$1tlog\$1backup\$1copy\$1to\$1S3. Reconnectez-vous au point de terminaison RDS et réessayez.  | Une erreur interne s’est produite. | Reconnectez-vous au point de terminaison RDS et réexécutez la procédure stockée `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Seul l'un de ces trois ensembles de paramètres peut être fourni. SET-1:(@backup\$1file\$1start\$1time, @backup\$1file\$1end\$1time) \$1 SET-2:(@starting\$1lsn, @ending\$1lsn) \$1 SET-3:(@rds\$1backup\$1starting\$1seq\$1id, @rds\$1backup\$1ending\$1seq\$1id)  | Plusieurs ensembles de paramètres ont été fournis. | Vous pouvez spécifier les paramètres d'heure, de LSN ou d'ID de séquence. Un de ces trois ensembles de paramètres est requis. Pour plus d'informations sur les paramètres requis, consultez [Copie des sauvegardes de journaux de transactions](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | L'exécution de la procédure stockée rds\$1tlog\$1backup\$1copy\$1to\$1S3 dans une transaction n'est pas prise en charge. Vérifiez qu'aucune transaction n'est ouverte dans la session et réessayez.  | La procédure stockée a été tentée dans le cadre d'une transaction en utilisant `BEGIN` et `END`. | Évitez d'utiliser `BEGIN` et `END` lors de l'exécution de la procédure stockée `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Les paramètres fournis ne sont pas inclus dans la période de conservation des journaux de sauvegarde des transactions. Pour répertorier les fichiers de sauvegarde des journaux de transactions disponibles, exécutez la fonction rds\$1fn\$1list\$1tlog\$1backup\$1metadata.  | Aucune sauvegarde des journaux de transactions n'est disponible pour les paramètres d'entrée fournis qui correspondent à la fenêtre de conservation des copies. | Réessayez avec un ensemble de paramètres valide. Pour plus d'informations sur les paramètres requis, consultez [Copie des sauvegardes de journaux de transactions](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Une erreur d'autorisations s'est produite lors du traitement de la demande. Assurez-vous que le compartiment se trouve dans le même compte et la même région que l'instance de base de données, et confirmez les autorisations de la politique de compartiment S3 par rapport au modèle figurant dans la documentation publique.  | Un problème a été détecté avec le compartiment S3 fourni ou ses autorisations de politique. | Confirmez que votre configuration d'accès aux sauvegardes des journaux de transactions est correcte. Pour plus d'informations sur les exigences de configuration de votre compartiment S3, consultez [Exigences](USER.SQLServer.AddlFeat.TransactionLogAccess.md#USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | L'exécution de la procédure stockée `rds_tlog_backup_copy_to_S3` sur une instance de réplica en lecture RDS n'est pas autorisée.  | La procédure stockée a été tentée sur une instance de réplica en lecture RDS. | Connectez-vous à l'instance de base de données principale RDS pour exécuter la procédure stockée `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Le LSN du paramètre d'entrée `@starting_lsn` doit être inférieur à `@ending_lsn`.  | La valeur fournie pour le paramètre d'entrée `@starting_lsn` était supérieure à la valeur fournie pour le paramètre d'entrée `@ending_lsn`. | Veillez à ce que la valeur fournie pour le paramètre d'entrée `@starting_lsn` soit inférieure à la valeur fournie pour le paramètre d'entrée `@ending_lsn`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | La procédure stockée `rds_tlog_backup_copy_to_S3` ne peut être exécutée que par les membres du rôle `db_owner` dans la base de données source.  | Le rôle `db_owner` n'a pas été accordé au compte qui tente d'exécuter la procédure stockée `rds_tlog_backup_copy_to_S3` sur la base de données `db_name` fournie. | Veillez à ce que le compte exécutant la procédure stockée soit autorisé avec le rôle `db_owner` pour la base de données `db_name` fournie. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | L'ID de séquence pour le paramètre d'entrée `@rds_backup_starting_seq_id` doit être inférieur ou égal à `@rds_backup_ending_seq_id`.  | La valeur fournie pour le paramètre d'entrée `@rds_backup_starting_seq_id` était supérieure à la valeur fournie pour le paramètre d'entrée `@rds_backup_ending_seq_id`. | Veillez à ce que la valeur fournie pour le paramètre d'entrée `@rds_backup_starting_seq_id` soit inférieure à la valeur fournie pour le paramètre d'entrée `@rds_backup_ending_seq_id`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | L'option SQLSERVER\$1BACKUP\$1RESTORE n'est pas activée ou est en cours d'activation. Activez l'option ou réessayez ultérieurement.  | L'option `SQLSERVER_BACKUP_RESTORE` n'est pas activée sur l'instance de base de données ou a simplement été activée et est en attente d'une activation interne. | Activez l'option `SQLSERVER_BACKUP_RESTORE` comme indiqué dans la section Exigences. Attendez quelques minutes, puis réexécutez la procédure stockée `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | L'heure de début du paramètre d'entrée `@backup_file_start_time` doit être inférieure à `@backup_file_end_time`.  | La valeur fournie pour le paramètre d'entrée `@backup_file_start_time` était supérieure à la valeur fournie pour le paramètre d'entrée `@backup_file_end_time`. | Veillez à ce que la valeur fournie pour le paramètre d'entrée `@backup_file_start_time` soit inférieure à la valeur fournie pour le paramètre d'entrée `@backup_file_end_time`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Nous n'avons pas pu traiter la demande en raison d'un manque d'accès. Vérifiez votre configuration et vos autorisations pour cette fonctionnalité.  | Il se peut qu'il y ait un problème avec les autorisations du compartiment Amazon S3, ou que le compartiment Amazon S3 fourni se trouve dans un autre compte ou une autre région. | Veillez à ce que les autorisations de la politique de compartiment Amazon S3 puissent autoriser l'accès RDS. Veillez à ce que le compartiment Amazon S3 se trouve dans le même compte et la même région que l'instance de base de données. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Vous ne pouvez pas fournir d'ARN de clé KMS en tant que paramètre d'entrée pour la procédure stockée pour les instances à stockage non chiffré.  | Quand le chiffrement de stockage n'est pas activé sur l'instance de base de données, le paramètre d'entrée `@kms_key_arn` ne doit pas être fourni. | Ne fournissez aucun paramètre d'entrée pour `@kms_key_arn`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Vous devez fournir un ARN de clé KMS en tant que paramètre d'entrée à la procédure stockée pour les instances à stockage chiffré.  | Quand le chiffrement de stockage est activé sur l'instance de base de données, le paramètre d'entrée `@kms_key_arn` doit être fourni. | Fournissez un paramètre d'entrée pour `@kms_key_arn` dont la valeur correspond à l'ARN du compartiment Amazon S3 à utiliser pour les sauvegardes des journaux de transactions. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Vous devez exécuter la procédure stockée `rds_tlog_copy_setup` et définir le `@target_s3_arn`, avant d'exécuter la procédure stockée `rds_tlog_backup_copy_to_S3`.  | La procédure de configuration de l'accès aux sauvegardes des journaux de transactions n'était pas terminée avant la tentative d'exécution de la procédure stockée `rds_tlog_backup_copy_to_S3`. | Exécutez la procédure stockée `rds_tlog_copy_setup` avant d'exécuter la procédure stockée `rds_tlog_backup_copy_to_S3`. Pour plus d'informations sur l'exécution de la procédure de configuration pour accéder aux sauvegardes des journaux de transactions, consultez [Configuration de l'accès aux sauvegardes des journaux de transactions](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md).  | 