

# Compatibilidad con el Coordinador de transacciones distribuidas de Microsoft en RDS for SQL Server
<a name="Appendix.SQLServer.Options.MSDTC"></a>

Una *transacción distribuida* es una transacción de base de datos en la que participan dos o más anfitriones de red. RDS for SQL Server admite transacciones distribuidas entre anfitriones, donde un solo anfitrión puede ser uno de los siguientes:
+ Instancia de base de datos de RDS para SQL Server
+ Host local de SQL Server
+ Host de Amazon EC2 con SQL Server instalado
+ Cualquier otro host de EC2 o instancia de base de datos de RDS con un motor de base de datos que admita transacciones distribuidas

En RDS, a partir de SQL Server 2012 (versión 11.00.5058.0.v1 y posterior), todas las ediciones de RDS for SQL Server admiten transacciones distribuidas. La compatibilidad se proporciona con el Coordinador de transacciones distribuidas de Microsoft (MSDTC). Para obtener información detallada acerca de MSDTC, consulte [Distributed Transaction Coordinator](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms684146(v=vs.85)) en la documentación de Microsoft.

**Contents**
+ [Limitaciones](#Appendix.SQLServer.Options.MSDTC.Limitations)
+ [Habilitación de MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md)
  + [Creación del grupo de opciones para MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.OptionGroup)
  + [Agregar la opción de MSDTC al grupo de opciones](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Add)
  + [Creación del grupo de parámetros para MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.CreateParamGroup)
  + [Modificación del parámetro para MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)
  + [Asociación del grupo de opciones y el grupo de parámetros con la instancia de base de datos](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.Apply)
  + [Modificación de la opción MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Modify)
+ [Utilización de transacciones](#Appendix.SQLServer.Options.MSDTC.Using)
  + [Uso de transacciones distribuidas](#Appendix.SQLServer.Options.MSDTC.UsingXA)
  + [Utilización de transacciones XA](#MSDTC.XA)
  + [Uso del seguimiento de transacciones](#MSDTC.Tracing)
+ [Deshabilitación de MSDTC](Appendix.SQLServer.Options.MSDTC.Disable.md)
+ [Solución de problemas de MSDTC para SQL Server de RDS](Appendix.SQLServer.Options.MSDTC.Troubleshooting.md)

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

Las siguientes limitaciones se aplican al uso de MSDTC en RDS para SQL Server:
+ MSDTC no se admite en instancias que utilizan la creación de reflejo de base de datos de SQL Server. Para obtener más información, consulte [Transacciones - Grupos de disponibilidad y creación de reflejo de la base de datos](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).
+ El parámetro `in-doubt xact resolution` debe estar establecido en 1 o 2. Para obtener más información, consulte [Modificación del parámetro para MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC).
+ MSDTC requiere que todos los nombres de host que participan en transacciones distribuidas se puedan resolver mediante sus nombres de host. RDS mantiene automáticamente esta funcionalidad para instancias unidas a dominios. Sin embargo, para instancias independientes, asegúrese de configurar manualmente el servidor DNS.
+ Las transacciones XA de Java Database Connectivity (JDBC) son compatibles con SQL Server 2017 versión 14.00.3223.3 y posteriores, así como con SQL Server 2019.
+ No se admiten transacciones distribuidas que dependan de bibliotecas de vínculos dinámicos (DLL) del cliente en instancias de RDS.
+ No se admite el uso de bibliotecas de vínculos dinámicos XA personalizadas.

# Habilitación de MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Enabling"></a>

Ejecute el siguiente proceso para habilitar MSDTC para su instancia de base de datos:

1. Cree un nuevo grupo de opciones o elija un grupo de opciones ya existente.

1. Añada la opción `MSDTC` al grupo de opciones.

1. Cree un nuevo grupo de parámetros o elija un grupo de parámetros existente.

1. Modifique el grupo de parámetros para establecer el parámetro `in-doubt xact resolution` en 1 o 2.

1. Asocie el grupo de opciones y el grupo de parámetros a la instancia de base de datos.

## Creación del grupo de opciones para MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

Utilice la Consola de administración de AWS o la AWS CLI para crear un grupo de opciones que corresponda al motor de SQL Server y la versión de su instancia de base de datos.

**nota**  
También puede utilizar un grupo de opciones ya existente si es para el motor y la versión correctos de SQL Server.

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

El siguiente procedimiento crea un grupo de opciones para SQL Server Standard Edition 2016.

**Para crear el grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija **Create group**.

1. En el panel **Create option group (Crear grupo de opciones)**, haga lo siguiente:

   1. En **Nombre**, escriba un nombre para el grupo de opciones que sea exclusivo dentro de su cuenta de AWS, como **msdtc-se-2016**. El nombre solo puede contener letras, dígitos y guiones.

   1. En **Descripción**, escriba una breve descripción del grupo de opciones, como **MSDTC option group for SQL Server SE 2016**. La descripción se utiliza para fines de visualización. 

   1. Para **Engine (Motor)**, elija **sqlserver-se**.

   1. En **Versión principal del motor**, elija **13.00**.

1. Elija **Create** (Crear).

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

En el siguiente ejemplo se crea un grupo de opciones para SQL Server Standard Edition 2016.

**Para crear el grupo de opciones**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o: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"
  ```

  En: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"
  ```

## Agregar la opción de MSDTC al grupo de opciones
<a name="Appendix.SQLServer.Options.MSDTC.Add"></a>

A continuación, utilice la Consola de administración de AWS o la AWS CLI para agregar la opción `MSDTC` al grupo de opciones.

Se requieren los siguientes ajustes de opciones:
+ **Puerto**: el puerto que utilice para acceder a MSDTC. Los valores permitidos son 1150–49.151 excepto 1234, 1434, 3260, 3343, 3389 y 47.001. El valor predeterminado es 5000.

  Asegúrese de que el puerto que desea utilizar está habilitado en las reglas de firewall. Además, asegúrese de que este puerto esté habilitado, según sea necesario, en las reglas de entrada y salida del grupo de seguridad asociado a su instancia de base de datos. Para obtener más información, consulte [No puede conectarse a la instancia de base de datos de Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting). 
+ **Grupos de seguridad**: la pertenencia a grupos de seguridad de VPC para la instancia de base de datos de RDS.
+ **Tipo de autenticación**: el modo de autenticación entre alojamientos. Se admiten los siguientes tipos de autenticación:
  + Mutua: las instancias RDS se autentican mutuamente mediante la autenticación integrada. Si se selecciona esta opción, todas las instancias asociadas a este grupo de opciones deben estar unidas al dominio.
  + Ninguna: no se realiza ninguna autenticación entre alojamientos. No recomendamos utilizar este modo en entornos de producción.
+ **Tamaño del registro de transacciones**: el tamaño del registro de transacciones de MSDTC. Los valores permitidos son 4–1024. El tamaño predeterminado es 4 MB.

Los siguientes ajustes de opciones son opcionales:
+ **Habilitar conexiones entrantes**: indica si se permiten conexiones MSDTC entrantes a instancias asociadas a este grupo de opciones.
+ **Habilitar conexiones salientes**: indica si desea permitir conexiones MSDTC salientes desde instancias asociadas a este grupo de opciones.
+ **Habilitar XA**: si desea permitir transacciones XA. Para obtener más información sobre el protocolo XA, consulte [Especificación XA](https://publications.opengroup.org/c193).
+ **Habilitar LU de SNA**: indica si se va a permitir que el protocolo LU de SNA se utilice para transacciones distribuidas. Para obtener más información sobre la compatibilidad con el protocolo LU de SNA, consulte [Managing IBM CICS LU 6.2 Transactions](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85)) en la documentación de Microsoft.

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

**Para agregar la opción MSDTC**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones que acaba de crear.

1. Seleccione **Add option (Añadir opción)**.

1. En **Detalles de la opción**, elija **MSDTC** en **Nombre de la opción**.

1. En **Configuración de opciones**:

   1. En **Puerto**, escriba el número de puerto para acceder a MSDTC. El valor predeterminado es **5000**.

   1. En **Security groups** (Grupos de seguridad), elija el grupo de seguridad de VPC que desea asociar a la opción.

   1. En **Tipo de autenticación**, elija **Mutua** o **Ninguna**.

   1. En **Tamaño del registro de transacciones**, escriba un valor entre 4 y 1024. El valor predeterminado es **4**.

1. En **Configuración adicional**, haga lo siguiente:

   1. En **Conexiones**, elija **Habilitar conexiones entrantes** y **Habilitar conexiones salientes** según sea necesario.

   1. En **Protocolos permitidos**, elija **Habilitar XA** y **Habilitar LU de SNA**.

1. En **Scheduling (Programación)**, elija si desea agregar la opción inmediatamente o en el siguiente período de mantenimiento.

1. Seleccione **Add option (Añadir opción)**.

   Para agregar esta opción, no es necesario reiniciar.

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

**Para agregar la opción MSDTC**

1. Cree un archivo JSON, por ejemplo `msdtc-option.json`, con los siguientes parámetros obligatorios:

   ```
   {
   "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. Añada la opción `MSDTC` al grupo de opciones.  
**Example**  

   Para Linux, macOS o:Unix

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

   En:Windows

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

   No es necesario reiniciar el equipo.

## Creación del grupo de parámetros para MSDTC
<a name="MSDTC.CreateParamGroup"></a>

Cree o modifique un grupo de parámetros para el parámetro `in-doubt xact resolution` que corresponde a la edición y versión de SQL Server de la instancia de base de datos.

### Consola
<a name="CreateParamGroup.MSDTC.Console"></a>

En el ejemplo siguiente se crea un grupo de parámetros para SQL Server Standard Edition 2016.

**Para crear el grupo de parámetros**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, seleccione **Parameter groups** (Grupos de parámetros).

1. Elija **Create parameter group**.

1. En el panel **Create parameter group (Crear grupo de parámetros)**, haga lo siguiente:

   1. En **Familia de grupos de parámetros**, elija **sqlserver-se-13.0**.

   1. En **Nombre de grupo**, escriba un identificador para el grupo de parámetros, como **msdtc-sqlserver-se-13**.

   1. En **Descripción**, escriba **in-doubt xact resolution**.

1. Elija **Create** (Crear).

### CLI
<a name="CreateParamGroup.MSDTC.CLI"></a>

En el ejemplo siguiente se crea un grupo de parámetros para SQL Server Standard Edition 2016.

**Para crear el grupo de parámetros**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o: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"
  ```

  En: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"
  ```

## Modificación del parámetro para MSDTC
<a name="ModifyParam.MSDTC"></a>

Modifique el parámetro `in-doubt xact resolution` en el grupo de parámetros que corresponde a la edición y la versión de SQL Server de su instancia de base de datos.

Para MSDTC, establezca el parámetro `in-doubt xact resolution` en uno de los siguientes:
+ `1` – `Presume commit`: se supone que todas las transacciones de MSDTC en duda se han confirmado.
+ `2` – `Presume abort`: se supone que todas las transacciones de MSDTC en duda se han detenido.

Para obtener más información, consulte [in-doubt xact resolution (opción de configuración del servidor)](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/in-doubt-xact-resolution-server-configuration-option) en la documentación de Microsoft.

### Consola
<a name="ModifyParam.MSDTC.Console"></a>

En el ejemplo siguiente se modifica el grupo de parámetros que ha creado para SQL Server Standard Edition 2016.

**Para modificar el grupo de parámetros**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, seleccione **Parameter groups** (Grupos de parámetros).

1. Elija el grupo de parámetros, como **msdtc-sqlserver-se-13**.

1. En **Parámetros**, filtre la lista de parámetros para **xact**.

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

1. Elija **Edit parameters (Editar parámetros)**.

1. Escriba **1** o **2**.

1. Elija **Guardar cambios**.

### CLI
<a name="ModifyParam.MSDTC.CLI"></a>

En el ejemplo siguiente se modifica el grupo de parámetros que ha creado para SQL Server Standard Edition 2016.

**Para modificar el grupo de parámetros**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o: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"
  ```

  En: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"
  ```

## Asociación del grupo de opciones y el grupo de parámetros con la instancia de base de datos
<a name="MSDTC.Apply"></a>

Puede utilizar la Consola de administración de AWS o la AWS CLI para asociar el grupo de opciones MSDTC y el grupo de parámetros con la instancia de base de datos.

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

Puede asociar el grupo de opciones de MSDTC y el grupo de parámetros con una instancia de base de datos nueva o existente.
+ Para una nueva instancia de base de datos, asóciela cuando inicie la instancia. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).
+ Para una instancia de base de datos existente, asóciela modificando la instancia. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).
**nota**  
Si utiliza una instancia de base de datos que existe, esta ya debe tener asociado un dominio de Active Directory y un rol de AWS Identity and Access Management (IAM). Si crea una instancia unida a dominio nueva, especifique un rol de IAM y un dominio de Active Directory ya existentes. Para obtener más información, consulte [Uso de AWS Managed Active Directory con RDS para SQL Server](USER_SQLServerWinAuth.md).

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

Puede asociar el grupo de opciones de MSDTC y el grupo de parámetros con una instancia de base de datos nueva o existente.

**nota**  
Si usa una instancia de base de datos unidad a dominio que ya existe, esta debe tener ya asociada un dominio de Active Directory y un rol de IAM. Si crea una instancia unida a dominio nueva, especifique un rol de IAM y un dominio de Active Directory ya existentes. Para obtener más información, consulte [Uso de AWS Managed Active Directory con RDS para SQL Server](USER_SQLServerWinAuth.md).

**Para crear una instancia de base de datos con el grupo de opciones y el grupo de parámetros de MSDTC**
+ Especifique el mismo tipo de motor de base de datos y la misma versión principal que ha utilizado al crear el grupo de opciones.  
**Example**  

  Para Linux, macOS o: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
  ```

  En: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
  ```

**Para modificar una instancia de base de datos y asociar el grupo de opciones y el grupo de parámetros de MSDTC**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o: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
  ```

  En: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
  ```

## Modificación de la opción MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Modify"></a>

Después de habilitar la opción `MSDTC`, puede modificar su configuración. Para obtener más información acerca de cómo modificar la configuración de opciones, consulte [Modificación de una configuración de opciones](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

**nota**  
Algunos cambios en la configuración de la opción MSDTC requieren que se reinicie el servicio MSDTC. Este requisito puede afectar a las transacciones distribuidas en ejecución.

## Utilización de transacciones
<a name="Appendix.SQLServer.Options.MSDTC.Using"></a>

### Uso de transacciones distribuidas
<a name="Appendix.SQLServer.Options.MSDTC.UsingXA"></a>

En Amazon RDS for SQL Server, ejecute transacciones distribuidas de la misma manera que las transacciones distribuidas que se ejecutan en las instalaciones:
+ Usando transacciones promocionables `System.Transactions` de .NET Framework , que optimizan las transacciones distribuidas aplazando su creación hasta que sean necesarias.

  En este caso, la promoción es automática y no requiere ninguna intervención. Si solo hay un administrador de recursos dentro de la transacción, no se realiza ninguna promoción. Para obtener más información acerca de los ámbitos de transacción implícitos, consulte [Implementación de una transacción implícita usando el ámbito de transacción](https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/implementing-an-implicit-transaction-using-transaction-scope) en la documentación de Microsoft.

  Las transacciones promocionables son compatibles con estas implementaciones .NET:
  + A partir de ADO.NET 2.0, `System.Data.SqlClient` admite transacciones promocionables con SQL Server. Para obtener más información, consulte [Integración de System.Transactions con SQL Server](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/system-transactions-integration-with-sql-server) en la documentación de Microsoft.
  + ODP.NET admite `System.Transactions`. Se crea una transacción local para la primera conexión abierta en el ámbito `TransactionsScope` a Oracle Database 11g versión 1 (versión 11.1) y posteriores. Cuando se abre una segunda conexión, esta transacción se promueve automáticamente a una transacción distribuida. Para obtener más información acerca de la compatibilidad con transacciones distribuidas en ODP.NET, consulte [Integración con Coordinador de transacciones distribuidas de Microsoft](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/ntmts/using-mts-with-oracledb.html) en la documentación de Microsoft.
+ Uso de la instrucción `BEGIN DISTRIBUTED TRANSACTION`. Para obtener más información, consulte [BEGIN DISTRIBUTION TRANSACT-SQL (Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql) en la documentación de Microsoft.

### Utilización de transacciones XA
<a name="MSDTC.XA"></a>

A partir de RDS for SQL Server 2017 versión 14.00.3223.3, puede controlar las transacciones distribuidas mediante JDBC. Cuando establece la opción `Enable XA` en `true` en la opción `MSDTC`, RDS habilita automáticamente las transacciones de JDBC y otorga el rol `SqlJDBCXAUser` al usuario `guest`. Esto permite ejecutar transacciones distribuidas mediante JDBC. Para obtener más información, incluido un ejemplo de código, consulte [Descripción de las transacciones XA](https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions) en la documentación de Microsoft.

### Uso del seguimiento de transacciones
<a name="MSDTC.Tracing"></a>

RDS admite controlar los seguimientos de transacciones de MSDTC y descargarlos desde la instancia de base de datos de RDS para solucionar problemas. Puede controlar las sesiones de seguimiento de transacciones ejecutando el siguiente procedimiento almacenado de RDS.

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

El siguiente parámetro es obligatorio:
+ `trace_action`: la acción de rastreo. Puede ser `START`, `STOP`, o `STATUS`.

Los siguientes parámetros son opcionales:
+ `@traceall`: establezca en 1 para realizar un seguimiento de todas las transacciones distribuidas. El valor predeterminado es 0.
+ `@traceaborted`: establezca en 1 para realizar un seguimiento de las transacciones distribuidas canceladas. El valor predeterminado es 0.
+ `@tracelong`: establezca en 1 para realizar un seguimiento de transacciones distribuidas de larga duración. El valor predeterminado es 0.

**Example de acción de seguimiento START**  
Para iniciar una nueva sesión de seguimiento de transacciones, ejecute la instrucción de ejemplo siguiente.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'START',
@traceall='0',
@traceaborted='1',
@tracelong='1';
```
Solo puede estar activa una sesión de seguimiento de transacciones a la vez. Si se emite un nuevo comando `START` de sesión de seguimiento mientras una sesión de seguimiento está activa, se devuelve un error y la sesión de seguimiento activa se mantiene sin cambios.

**Example de acción de seguimiento STOP**  
Para detener una sesión de seguimiento de transacciones, ejecute la siguiente instrucción.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
```
Esta instrucción detiene la sesión de seguimiento de transacciones activa y guarda los datos de seguimiento de la transacción en el directorio de registro de la instancia de base de datos de RDS. La primera fila de la salida contiene el resultado general y las siguientes líneas indican los detalles de la operación.  
A continuación se muestra un ejemplo de una detención satisfactoria de sesión de seguimiento.  

```
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
```
Puede utilizar la información detallada para consultar el nombre del archivo de registro generado. Para obtener más información acerca de la descarga de archivos de registro de la instancia de base de datos de RDS, consulte [Supervisión de archivos de registro de Amazon RDS](USER_LogAccess.md).  
Los registros de sesión de seguimiento permanecen en la instancia durante 35 días. Los registros de sesión de seguimiento anteriores se eliminan automáticamente.

**Example de acción de seguimiento de STATUS**  
Para rastrear el estado de una sesión de seguimiento de transacciones, ejecute la siguiente instrucción.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STATUS'
```
Esta instrucción genera lo siguiente como filas separadas del conjunto de resultados.  

```
OK
SessionStatus: <Started|Stopped>
TraceAll: <True|False>
TraceAborted: <True|False>
TraceLongLived: <True|False>
```
La primera línea indica el resultado general de la operación: `OK` o `ERROR` con detalles, si procede. Las líneas siguientes indican detalles sobre el estado de la sesión de seguimiento:   
+ `SessionStatus` puede ser uno de los siguientes:
  + `Started` si se está ejecutando una sesión de seguimiento.
  + `Stopped` si no se está ejecutando ninguna sesión de seguimiento.
+ Los indicadores de sesión de seguimiento pueden ser `True` o `False` en función de cómo se establecieron en el `START` comando.

# Deshabilitación de MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Disable"></a>

Para deshabilitar MSDTC, quite la opción `MSDTC` de su grupo de opciones.

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

**Para quitar la opción MSDTC de su grupo de opciones**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En el panel de navegación, elija **Option groups** (Grupos de opciones).

1. Elija el grupo de opciones con la opción `MSDTC` (`msdtc-se-2016` en los ejemplos anteriores).

1. Elija **Delete option (Eliminar opción)**.

1. En **Opciones de eliminación**, elija **MSDTC** para **Opciones para eliminar**.

1. En **Apply immediately (Aplicar inmediatamente)**, seleccione **Yes (Sí)** para eliminar la opción inmediatamente o **No** para eliminarla en el siguiente período de mantenimiento.

1. Elija **Eliminar**.

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

**Para quitar la opción MSDTC de su grupo de opciones**
+ Utilice uno de los siguientes comandos.  
**Example**  

  Para Linux, macOS o:Unix

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

  En:Windows

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

# Solución de problemas de MSDTC para SQL Server de RDS
<a name="Appendix.SQLServer.Options.MSDTC.Troubleshooting"></a>

En algunos casos, puede tener problemas para establecer una conexión entre MSDTC que se ejecuta en un equipo cliente y el servicio de MSDTC que se ejecuta en una instancia de base de datos de SQL Server de RDS. Si es así, asegúrese de lo siguiente:
+ Las reglas de entrada para el grupo de seguridad asociado a la instancia de base de datos están configuradas correctamente. Para obtener más información, consulte [No puede conectarse a la instancia de base de datos de Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).
+ El equipo cliente está configurado correctamente.
+ Las reglas de firewall de MSDTC en el equipo del cliente están habilitadas.

**Para configurar el equipo cliente**

1. Abra **Servicios de componentes**.

   O bien, en **Administrador del servidor**, elija **Herramientas**, y, a continuación, elija **Servicios de componentes**.

1. Expanda **Servicios de componentes**, expanda **Equipos**, expanda **Mi PC**, y, a continuación, expanda **Coordinador de transacciones distribuidas**.

1. Abra el menú contextual (clic derecho) de **DTC local** y elija **Propiedades**.

1. Elija la pestaña **Seguridad**.

1. Elija todas las opciones siguientes:
   + **Acceso DTC de red**
   + **Permitir entrada**
   + **Permitir salida**

1. Asegúrese de que se haya elegido el modo de autenticación correcto:
   + **Autenticación mutua requerida**: el equipo cliente se une al mismo dominio que otros nodos que participan en transacciones distribuidas o existe una relación de confianza configurada entre dominios.
   + **No se requiere autenticación**: todos los demás casos.

1. Elija **Aceptar** para guardar los cambios.

1. Si se le pide que reinicie el servicio, elija **Sí**.

**Para habilitar las reglas de firewall de MSDTC**

1. Abra el Firewall de Windows y, a continuación, elija **Configuración avanzada**.

   O, en **Administrador del servidor**, elija **Herramientas** y, a continuación, elija **Firewall de Windows con seguridad avanzada**.
**nota**  
En función del sistema operativo,el Firewall de Windows puede llamarse Firewall de Windows Defender.

1. Elija **Reglas de entrada** en el panel izquierdo.

1. Habilite las siguientes reglas de firewall, si aún no están habilitadas:
   + **Coordinador de transacciones distribuidas (RPC)**
   + **Coordinador de transacciones distribuidas (RPC) -EPMAP**
   + **Coordinador de Transacciones Distribuidas (TCP-In)**

1. Cierre el firewall de Windows.