

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.

# Prise en charge de Microsoft Distributed Transaction Coordinator dans RDS for SQL Server
<a name="Appendix.SQLServer.Options.MSDTC"></a>

Une *transaction distribuée* est une transaction de base de données dans laquelle deux hôtes réseau ou plus sont impliqués. RDS for SQL Server prend en charge les transactions distribuées entre hôtes tels que :
+ Instance de base de données RDS for SQL Server
+ Hôte SQL Server sur site
+ Hôte Amazon EC2 avec SQL Server installé
+ Tout autre hôte EC2 ou instance de base de données RDS avec un moteur de base de données prenant en charge les transactions distribuées

Dans RDS, à partir de SQL Server 2012 (versions 11.00.5058.0.v1 et ultérieures), toutes les éditions de RDS for SQL Server prennent en charge les transactions distribuées. La prise en charge est fournie via Microsoft Distributed Transaction Coordinator (MSDTC). Pour plus d’informations sur MSDTC, consultez [Distributed Transaction Coordinator](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms684146(v=vs.85)) dans la documentation Microsoft.

**Contents**
+ [Limitations](#Appendix.SQLServer.Options.MSDTC.Limitations)
+ [Activation de MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md)
  + [Création du groupe d'options pour MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.OptionGroup)
  + [Ajout de l'option MSDTC au groupe d'options](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Add)
  + [Création du groupe de paramètres pour MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.CreateParamGroup)
  + [Modification du paramètre pour MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)
  + [Association du groupe d'options et du groupe de paramètres à l'instance de base de données](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.Apply)
  + [Modification de l'option MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Modify)
+ [Utilisation de transactions](#Appendix.SQLServer.Options.MSDTC.Using)
  + [Utilisation des transactions distribuées](#Appendix.SQLServer.Options.MSDTC.UsingXA)
  + [Utilisation de transactions XA](#MSDTC.XA)
  + [Utilisation du suivi des transactions](#MSDTC.Tracing)
+ [Désactivation de MSDTC](Appendix.SQLServer.Options.MSDTC.Disable.md)
+ [Dépannage de MSDTC pour RDS for SQL Server](Appendix.SQLServer.Options.MSDTC.Troubleshooting.md)

## Limitations
<a name="Appendix.SQLServer.Options.MSDTC.Limitations"></a>

Les limitations suivantes s'appliquent à l'utilisation de MSDTC sur RDS for SQL Server :
+ MSDTC n'est pas pris en charge sur les instances utilisant la mise en miroir de base de données SQL Server. Pour plus d’informations, consultez [Transactions - availability groups and database mirroring](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring?view=sql-server-ver15#non-support-for-distributed-transactions).
+ Le paramètre `in-doubt xact resolution` doit être défini sur 1 ou 2. Pour plus d’informations, consultez [Modification du paramètre pour MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC).
+ MSDTC exige que tous les hôtes participant à des transactions distribuées soient résolubles à l'aide de leur nom d'hôte. RDS gère automatiquement cette fonctionnalité pour les instances jointes au domaine. Toutefois, pour les instances autonomes, assurez-vous de configurer manuellement le serveur DNS.
+ Les transactions Java Database Connectivity (JDBC) XA sont prises en charge pour SQL Server 2017 versions 14.00.3223.3 et ultérieures, et pour SQL Server 2019.
+ Les transactions distribuées qui dépendent des bibliothèques de liens dynamiques clientes (DLLs) sur les instances RDS ne sont pas prises en charge.
+ L'utilisation de bibliothèques à liens dynamiques XA personnalisées n'est pas prise en charge.

# Activation de MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Enabling"></a>

Utilisez la procédure suivante pour activer MSDTC pour votre instance de base de données :

1. Créez un groupe d’options ou choisissez un groupe d’options existant.

1. Ajoutez l’option `MSDTC` au groupe d’options.

1. Créez un nouveau groupe de paramètres ou choisissez un groupe de paramètres existant.

1. Modifiez le groupe de paramètres de manière à définir le paramètre `in-doubt xact resolution` sur 1 ou 2.

1. Associez le groupe d’options et le groupe de paramètres à l’instance de base de données.

## Création du groupe d'options pour MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

Utilisez AWS Management Console ou l'AWS CLI pour créer un groupe d'options correspondant au moteur SQL Server et à la version de votre instance de base de données.

**Note**  
Vous pouvez également utiliser un groupe d’options existant s’il convient au moteur et à la version SQL Server.

### Console
<a name="OptionGroup.MSDTC.Console"></a>

La procédure suivante crée un groupe d’options pour SQL Server Standard Edition 2016.

**Pour créer le groupe d’options**

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. Dans le panneau de navigation, choisissez **Groupes d’options**.

1. Choisissez **Create group**.

1. Dans la fenêtre **Créer un groupe d'options**, procédez comme suit :

   1. Pour **Nom**, attribuez au groupe d’options un nom unique au sein de votre compte AWS, par exemple **msdtc-se-2016**. Le nom ne peut contenir que des lettres, des chiffres et des tirets.

   1. Pour **Description**, saisissez une brève description du groupe d’options, par exemple **MSDTC option group for SQL Server SE 2016**. La description est utilisée à des fins d’affichage. 

   1. Pour **Moteur**, choisissez **sqlserver-se**.

   1. Pour **Version majeure du moteur**, choisissez **13.00**.

1. Choisissez **Créer**.

### Interface de ligne de commande (CLI)
<a name="OptionGroup.MSDTC.CLI"></a>

L'exemple suivant crée un groupe d'options pour SQL Server Standard Edition 2016.

**Pour créer le groupe d’options**
+ Utilisez l’une des commandes suivantes.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws rds create-option-group \
      --option-group-name msdtc-se-2016 \
      --engine-name sqlserver-se \
      --major-engine-version 13.00 \
      --option-group-description "MSDTC option group for SQL Server SE 2016"
  ```

  Pour Windows :

  ```
  aws rds create-option-group ^
      --option-group-name msdtc-se-2016 ^
      --engine-name sqlserver-se ^
      --major-engine-version 13.00 ^
      --option-group-description "MSDTC option group for SQL Server SE 2016"
  ```

## Ajout de l'option MSDTC au groupe d'options
<a name="Appendix.SQLServer.Options.MSDTC.Add"></a>

Ensuite, utilisez AWS Management Console ou l'AWS CLI pour ajouter l'option `MSDTC` au groupe d'options.

Les paramètres d'option suivants sont requis :
+ **Port** – Port que vous utilisez pour accéder à MSDTC. Les valeurs autorisées sont comprises entre 1150 et 49151, sauf 1234, 1434, 3260, 3343, 3389 et 47001. La valeur par défaut est 5000.

  Assurez-vous que le port que vous souhaitez utiliser est activé dans vos règles de pare-feu. Assurez-vous également que ce port est activé dans les règles entrantes et sortantes pour le groupe de sécurité associé à votre instance de base de données. Pour plus d’informations, consultez [Impossible de se connecter à l’instance de base de données Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting). 
+ **Security groups** (Groupes de sécurité) : appartenances au groupe de sécurité VPC pour votre instance de base de données RDS.
+ **Type d'authentification** – Mode d'authentification entre les hôtes. Les types d'authentification suivants sont pris en charge :
  + Mutuelle – Les instances RDS sont mutuellement authentifiées à l'aide d'une authentification intégrée. Si cette option est sélectionnée, toutes les instances associées à ce groupe d'options doivent être jointes au domaine.
  + Aucun(e) – Aucune authentification n'est effectuée entre les hôtes. Nous ne recommandons pas d'utiliser ce mode dans les environnements de production.
+ **Taille du journal des transactions** – Taille du journal des transactions MSDTC. Les valeurs autorisées sont comprises entre 4 et 1 024 Mo. La taille par défaut est 4 Mo.

Les paramètres d'option suivants sont facultatifs :
+ **Activer les connexions entrantes** – Indique si vous souhaitez autoriser les connexions MSDTC entrantes aux instances associées à ce groupe d'options.
+ **Activer les connexions sortantes** – Indique si vous souhaitez autoriser les connexions MSDTC sortantes à partir des instances associées à ce groupe d'options.
+ **Activer XA** – Indique si vous souhaitez autoriser les transactions XA. Pour plus d’informations sur le protocole XA, consultez [XA Specification](https://publications.opengroup.org/c193).
+ **Activer SNA LU** – Indique si le protocole SNA LU doit être utilisé pour les transactions distribuées. Pour plus d’informations sur la prise en charge du protocole SNA LU, consultez [Managing IBM CICS LU 6.2 Transactions](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85)) dans la documentation Microsoft.

### Console
<a name="Options.MSDTC.Add.Console"></a>

**Pour ajouter l’option MSDTC**

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. Dans le panneau de navigation, choisissez **Groupes d’options**.

1. Choisissez le groupe d'options que vous venez de créer.

1. Sélectionnez **Ajouter une option**.

1. Sous **Détails de l'option**, choisissez **MSDTC** pour **Nom de l'option**.

1. Sous **Paramètres des options** :

   1. Pour **Port**, entrez le numéro de port pour accéder à MSDTC. La valeur par défaut est **5000**.

   1. Pour **Groupes de sécurité**, choisissez le groupe de sécurité VPC à associer à l’option.

   1. Pour **Type d'authentification**, choisissez **Mutuelle** ou **Aucun(e)**.

   1. Pour **Taille du journal des transactions**, entrez une valeur comprise entre 4 et 1 024. La valeur par défaut est **4**.

1. Sous **Configuration supplémentaire**, procédez comme suit :

   1. Pour **Connexions**, choisissez, selon vos besoins, **Activer les connexions entrantes** et **Activer les connexions sortantes**.

   1. Pour **Protocoles autorisés**, choisissez, selon vos besoins, **Activer XA** et **Activer SNA LU**.

1. Sous **Planification**, choisissez si vous souhaitez ajouter l’option immédiatement ou lors de la fenêtre de maintenance suivante.

1. Sélectionnez **Ajouter une option**.

   Pour ajouter cette option, aucun redémarrage n'est requis.

### Interface de ligne de commande (CLI)
<a name="Options.MSDTC.Add.CLI"></a>

**Pour ajouter l’option MSDTC**

1. Créez un fichier JSON, par exemple `msdtc-option.json`, avec les paramètres requis suivants :

   ```
   {
   "OptionGroupName":"msdtc-se-2016",
   "OptionsToInclude": [
   	{
   	"OptionName":"MSDTC",
   	"Port":5000,
   	"VpcSecurityGroupMemberships":["sg-0abcdef123"],
   	"OptionSettings":[{"Name":"AUTHENTICATION","Value":"MUTUAL"},{"Name":"TRANSACTION_LOG_SIZE","Value":"4"}]
   	}],
   "ApplyImmediately": true
   }
   ```

1. Ajoutez l’option `MSDTC` au groupe d’options.  
**Example**  

   Pour Linux, macOS ou Unix :

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://msdtc-option.json \
       --apply-immediately
   ```

   Pour Windows :

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://msdtc-option.json ^
       --apply-immediately
   ```

   Aucun redémarrage n'est requis.

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

Créez ou modifiez un groupe de paramètres pour le paramètre `in-doubt xact resolution` qui correspond à l'édition et à la version de SQL Server de votre instance de base de données.

### Console
<a name="CreateParamGroup.MSDTC.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 AWS Management Console et ouvrez la console Amazon RDS à l’adresse [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

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 **msdtc-sqlserver-se-13**.

   1. Pour **Description**, saisissez **in-doubt xact resolution**.

1. Choisissez **Créer**.

### Interface de ligne de commande (CLI)
<a name="CreateParamGroup.MSDTC.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 msdtc-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "in-doubt xact resolution"
  ```

  Pour Windows :

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "in-doubt xact resolution"
  ```

## Modification du paramètre pour MSDTC
<a name="ModifyParam.MSDTC"></a>

Modifiez le paramètre `in-doubt xact resolution` 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 MSDTC, définissez le paramètre `in-doubt xact resolution` sur l'une des options suivantes :
+ `1` – `Presume commit`. Toute transaction MSDTC incertaine est présumée validée.
+ `2` – `Presume abort`. Toute transaction MSDTC incertaine est présumée arrêtée.

Pour plus d’informations, consultez [in-doubt xact resolution Server Configuration Option](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/in-doubt-xact-resolution-server-configuration-option) dans la documentation Microsoft.

### Console
<a name="ModifyParam.MSDTC.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 AWS Management Console et ouvrez la console Amazon RDS à l’adresse [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

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

1. Choisissez le groupe de paramètres, tel que **msdtc-sqlserver-se-13**.

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

1. Choisissez **in-doubt xact resolution**.

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

1. Entrez **1** ou **2**.

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

### Interface de ligne de commande (CLI)
<a name="ModifyParam.MSDTC.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 msdtc-sqlserver-se-13 \
      --parameters "ParameterName='in-doubt xact resolution',ParameterValue=1,ApplyMethod=immediate"
  ```

  Pour Windows :

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --parameters "ParameterName='in-doubt xact resolution',ParameterValue=1,ApplyMethod=immediate"
  ```

## Association du groupe d'options et du groupe de paramètres à l'instance de base de données
<a name="MSDTC.Apply"></a>

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

### Console
<a name="MSDTC.Apply.Console"></a>

Vous pouvez associer le groupe d’options et le groupe de paramètres MSDTC à une instance de base de données nouvelle ou existante.
+ Pour une nouvelle instance de base de données, associez-les 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-les en modifiant l’instance. Pour plus d’informations, consultez [Modification d'une instance de base de données Amazon RDS](Overview.DBInstance.Modifying.md).
**Note**  
Si vous utilisez une instance de base de données existante jointe au domaine, un domaine Active Directory et un rôle Gestion des identités et des accès AWS (IAM) doivent déjà lui être associés. Si vous créez une nouvelle instance jointe au domaine, spécifiez un domaine Active Directory et un rôle IAM existants. Pour plus d’informations, consultez [Utilisation d'Active Directory AWS géré avec RDS pour SQL Server](USER_SQLServerWinAuth.md).

### Interface de ligne de commande (CLI)
<a name="MSDTC.Apply.CLI"></a>

Vous pouvez associer le groupe d’options et le groupe de paramètres MSDTC à une instance de base de données nouvelle ou existante.

**Note**  
Si vous utilisez une instance de base de données jointe au domaine existante, un domaine Active Directory et un rôle IAM doivent déjà lui être associés. Si vous créez une nouvelle instance jointe au domaine, spécifiez un domaine Active Directory et un rôle IAM existants. Pour plus d’informations, consultez [Utilisation d'Active Directory AWS géré avec RDS pour SQL Server](USER_SQLServerWinAuth.md).

**Pour créer une instance DB avec le groupe d'options et le groupe de paramètres MSDTC**
+ Spécifiez le type de moteur de base de données et la version majeure utilisés lors de la création du groupe d’options.  
**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 \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name msdtc-se-2016 \
      --db-parameter-group-name msdtc-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 ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name msdtc-se-2016 ^
      --db-parameter-group-name msdtc-sqlserver-se-13
  ```

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

  Pour Linux, macOS ou Unix :

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

  Pour Windows :

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

## Modification de l'option MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Modify"></a>

Après avoir activé l'option `MSDTC`, vous pouvez modifier ses paramètres. Pour plus d’informations sur la modification des paramètres d’option, consultez [Modification d’un paramètre d’option](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

**Note**  
Certaines modifications apportées aux paramètres d'option MSDTC nécessitent le redémarrage du service MSDTC. Cette exigence peut affecter les transactions distribuées en cours d'exécution.

## Utilisation de transactions
<a name="Appendix.SQLServer.Options.MSDTC.Using"></a>

### Utilisation des transactions distribuées
<a name="Appendix.SQLServer.Options.MSDTC.UsingXA"></a>

Dans Amazon RDS for SQL Server, vous exécutez des transactions distribuées de la même manière que les transactions distribuées exécutées sur site :
+ Utilisation des transactions `System.Transactions` .NET framework susceptibles d'être promues, ce qui optimise les transactions distribuées en reportant leur création jusqu'à ce qu'elles soient nécessaires.

  Dans ce cas, la promotion est automatique et ne nécessite aucune intervention de votre part. S'il n'y a qu'un gestionnaire de ressources dans la transaction, aucune promotion n'est effectuée. Pour plus d’informations sur les portées des transactions implicites, consultez [Implementing an Implicit Transaction using Transaction Scope](https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/implementing-an-implicit-transaction-using-transaction-scope) dans la documentation Microsoft.

  Les transactions susceptibles d'être promues sont prises en charge avec les implémentations .NET suivantes : 
  + À partir de ADO.NET 2.0, `System.Data.SqlClient` prend en charge les transactions susceptibles d'être promues avec SQL Server. Pour plus d’informations, consultez [System.Transactions Integration with SQL Server](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/system-transactions-integration-with-sql-server) dans la documentation Microsoft.
  + ODP.NET prend en charge `System.Transactions`. Une transaction locale est créée pour la première connexion ouverte dans la portée `TransactionsScope` à Oracle Database 11g version 1 (version 11.1) et ultérieures. Lorsqu'une deuxième connexion est ouverte, cette transaction est automatiquement promue en tant que transaction distribuée. Pour plus d’informations sur la prise en charge des transactions distribuées dans ODP.NET, consultez [Microsoft Distributed Transaction Coordinator Integration](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/ntmts/using-mts-with-oracledb.html) dans la documentation Microsoft.
+ Utilisation de l'instruction `BEGIN DISTRIBUTED TRANSACTION`. Pour plus d’informations, consultez [BEGIN DISTRIBUTE TRANSACTION (Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql) dans la documentation Microsoft.

### Utilisation de transactions XA
<a name="MSDTC.XA"></a>

À partir de RDS for SQL Server 2017 version14.00.3223.3, vous pouvez contrôler les transactions distribuées à l'aide de JDBC. Lorsque vous définissez le paramètre `Enable XA` sur `true` dans l'option `MSDTC`, RDS active automatiquement les transactions JDBC et accorde le rôle `SqlJDBCXAUser` à l'utilisateur `guest`. Cela permet d'exécuter des transactions distribuées via JDBC. Pour plus d'informations, y compris pour voir un exemple de code, consultez [Comprendre les transactions XA](https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions) dans la documentation Microsoft.

### Utilisation du suivi des transactions
<a name="MSDTC.Tracing"></a>

RDS prend en charge le contrôle des suivis de transaction MSDTC et leur téléchargement à partir de l'instance de base de données RDS pour le dépannage. Vous pouvez contrôler les sessions de suivi de transaction en exécutant la procédure stockée RDS suivante.

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'trace_action',
[@traceall='0|1'],
[@traceaborted='0|1'],
[@tracelong='0|1'];
```

Les paramètres suivants sont obligatoires :
+ `trace_action` – Action de suivi. Il peut être `START`, `STOP` ou `STATUS`.

Les paramètres suivants sont facultatifs :
+ `@traceall` – La valeur 1 permet de suivre toutes les transactions distribuées. La valeur par défaut est 0.
+ `@traceaborted` – La valeur 1 permet de suivre les transactions distribuées annulées. La valeur par défaut est 0.
+ `@tracelong` – La valeur 1 permet de suivre les transactions distribuées de longue durée. La valeur par défaut est 0.

**Example de l'action de suivi START**  
Pour démarrer une nouvelle session de suivi des transactions, exécutez l'exemple d'instruction suivant.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'START',
@traceall='0',
@traceaborted='1',
@tracelong='1';
```
Une seule session de suivi des transactions peut être active à la fois. Si une nouvelle commande `START` de session de suivi est émise alors qu'une session de suivi est active, une erreur est renvoyée et la session de suivi active reste inchangée.

**Example de l'action de suivi STOP**  
Pour arrêter une session de suivi des transactions, exécutez l'instruction suivante.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
```
Cette instruction arrête la session active de suivi des transactions et enregistre les données de suivi des transactions dans le répertoire de journal de l'instance de base de données RDS. La première ligne de la sortie contient le résultat global, et les lignes suivantes indiquent les détails de l'opération.  
Vous trouverez ci-après un exemple d'arrêt de session de suivi réussi.  

```
OK: Trace session has been successfully stopped.
Setting log file to: D:\rdsdbdata\MSDTC\Trace\dtctrace.log
Examining D:\rdsdbdata\MSDTC\Trace\msdtctr.mof for message formats,  8 found.
Searching for TMF files on path: (null)
Logfile D:\rdsdbdata\MSDTC\Trace\dtctrace.log:
 OS version    10.0.14393  (Currently running on 6.2.9200)
 Start Time    <timestamp>
 End Time      <timestamp>
 Timezone is   @tzres.dll,-932 (Bias is 0mins)
 BufferSize            16384 B
 Maximum File Size     10 MB
 Buffers  Written      Not set (Logger may not have been stopped).
 Logger Mode Settings (11000002) ( circular paged
 ProcessorCount         1 
Processing completed   Buffers: 1, Events: 3, EventsLost: 0 :: Format Errors: 0, Unknowns: 3
Event traces dumped to d:\rdsdbdata\Log\msdtc_<timestamp>.log
```
Vous pouvez utiliser les informations détaillées pour rechercher le nom du fichier journal généré. Pour plus d’informations sur le téléchargement de fichiers journaux à partir de l’instance de base de données RDS, consultez [Surveillance des fichiers journaux Amazon RDS](USER_LogAccess.md).  
Les journaux de session de suivi sont conservés sur l'instance pendant 35 jours. Les journaux de session de suivi plus anciens sont automatiquement supprimés.

**Example de l'action de suivi STATUS**  
Pour suivre le statut d'une session de suivi des transactions, exécutez l'instruction suivante.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STATUS'
```
Cette instruction affiche les éléments suivants sous forme de lignes séparées dans l'ensemble de résultats.  

```
OK
SessionStatus: <Started|Stopped>
TraceAll: <True|False>
TraceAborted: <True|False>
TraceLongLived: <True|False>
```
La première ligne indique le résultat global de l'opération : `OK` ou `ERROR` avec des détails, le cas échéant. Les lignes suivantes indiquent des détails sur le statut de la session de suivi :   
+ `SessionStatus`, les valeurs suivantes sont possibles :
  + `Started` si une session de suivi est en cours d'exécution.
  + `Stopped` si aucune session de suivi n'est en cours d'exécution.
+ Les indicateurs de session de suivi peuvent être `True` ou `False` en fonction de la façon dont ils ont été définis dans la commande `START`.

# Désactivation de MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Disable"></a>

Pour désactiver MSDTC, supprimez l'option `MSDTC` de son groupe d'options.

## Console
<a name="Options.MSDTC.Disable.Console"></a>

**Pour supprimer l’option MSDTC de son groupe d’options**

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. Dans le panneau de navigation, choisissez **Groupes d’options**.

1. Choisissez le groupe d’options avec l’option `MSDTC` (`msdtc-se-2016` dans les exemples précédents).

1. Choisissez **Supprimer une option**.

1. Sous **Options de suppression**, choisissez **MSDTC** pour **Options à supprimer**.

1. Sous **Appliquer immédiatement**, choisissez **Oui** pour supprimer l'option immédiatement, ou **Non** pour la supprimer lors du prochain créneau de maintenance.

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

## Interface de ligne de commande (CLI)
<a name="Options.MSDTC.Disable.CLI"></a>

**Pour supprimer l’option MSDTC de son groupe d’options**
+ Utilisez l’une des commandes suivantes.  
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws rds remove-option-from-option-group \
      --option-group-name msdtc-se-2016 \
      --options MSDTC \
      --apply-immediately
  ```

  Pour Windows :

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name msdtc-se-2016 ^
      --options MSDTC ^
      --apply-immediately
  ```

# Dépannage de MSDTC pour RDS for SQL Server
<a name="Appendix.SQLServer.Options.MSDTC.Troubleshooting"></a>

Dans certains cas, vous pouvez avoir des difficultés à établir une connexion entre le service MSDTC s'exécutant sur un ordinateur client et le service MSDTC s'exécutant sur une instance de base de données RDS for SQL Server. Dans ce cas, assurez-vous que  :
+ Les règles entrantes pour le groupe de sécurité associé à l'instance de base de données sont configurées correctement. Pour plus d'informations, consultez [Impossible de se connecter à l’instance de base de données Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).
+ Votre ordinateur client est configuré correctement.
+ Les règles de pare-feu MSDTC sur votre ordinateur client sont activées.

**Pour configurer l'ordinateur client**

1. Ouvrez **Component Services (Services de composants)**.

   Ou, dans **Server Manager (Gestionnaire de serveur)**, choisissez **Tools (Outils)**, puis **Component Services (Services de composants)**.

1. Développez successivement **Component Services (Services de composants)**, **Computers (Ordinateurs)**, **My Computer (Mon ordinateur)** et **Distributed Transaction Coordinator (Coordinateur de transactions distribuées)**.

1. Ouvrez le menu contextuel (clic droit) pour **Local DTC (DTC local)** et choisissez **Properties (Propriétés)**.

1. Choisissez l'onglet **Security (Sécurité)**.

1. Choisissez toutes les options suivantes :
   + **Network DTC Access (Accès DTC réseau)**
   + **Allow Inbound (Autoriser le trafic entrant)**
   + **Allow Outbound (Autoriser le trafic sortant)**

1. Assurez-vous que le mode d'authentification correct est choisi :
   + **Mutual Authentication Required (Authentification mutuelle requise)** – La machine cliente est jointe au même domaine que les autres nœuds participant à une transaction distribuée, ou une relation d'approbation est configurée entre les domaines.
   + **No Authentication Required (Aucune authentification requise)** – Tous les autres cas.

1. Choisissez **OK** pour enregistrer vos modifications.

1. Si vous êtes invité à redémarrer le service, choisissez **Oui**.

**Pour activer les règles de pare-feu MSDTC**

1. Ouvrez le pare-feu Windows, puis choisissez **Paramètres avancés**.

   Ou, dans **Gestionnaire de serveur**, choisissez **Outils**, puis **Pare-feu Windows avec fonctions avancées de sécurité**.
**Note**  
En fonction de votre système d'exploitation, le Pare-feu Windows peut s'appeler « Pare-feu Windows Defender ».

1. Choisissez **Règles entrantes** dans le volet de gauche.

1. Activez, si ce n'est pas déjà le cas, les règles de pare-feu suivantes :
   + **Coordinateur de transactions distribuées (RPC)**
   + **Coordinateur de transactions distribuées (RPC-EPMAP)**
   + **Coordinateur de transactions distribuées (TCP-Entrée)**

1. Fermez le pare-feu Windows.