

# Suporte para o Microsoft Distributed Transaction Coordinator no RDS for SQL Server
<a name="Appendix.SQLServer.Options.MSDTC"></a>

Uma *transação distribuída* é uma transação de banco de dados na qual dois ou mais hosts de rede estão envolvidos. O Amazon RDS for SQL Server oferece suporte a transações distribuídas entre hosts. Um host único pode ser o seguinte:
+ Instância de banco de dados do RDS for SQL Server
+ Host do SQL Server no local
+ O host do Amazon EC2 com o SQL Server instalado
+ Qualquer outro host do EC2 ou instância de banco de dados do RDS com um mecanismo de banco de dados que ofereça suporte a transações distribuídas

No RDS, a começar pelo SQL Server 2012 (versão 11.00.5058.0.v1 e posterior), todas as edições do RDS for SQL Server oferecem suporte a transações distribuídas. O suporte é fornecido usando o MSDTC (Microsoft Distributed Transaction Coordinator). Para obter informações detalhadas sobre o MSDTC, consulte [Distributed Transaction Coordinator](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms684146(v=vs.85)) na documentação da Microsoft.

**Contents**
+ [Limitações](#Appendix.SQLServer.Options.MSDTC.Limitations)
+ [Habilitar o MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md)
  + [Criar o grupo de opções para o MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.OptionGroup)
  + [Adicionar a opção do MSDTC ao grupo de opções](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Add)
  + [Criar o grupo de parâmetros para o MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.CreateParamGroup)
  + [Modificar o parâmetro para o MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)
  + [Associar o grupo de opções e o grupo de parâmetros à instância de banco de dados.](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.Apply)
  + [Modificar a opção do MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Modify)
+ [Usar transações](#Appendix.SQLServer.Options.MSDTC.Using)
  + [Usar transações distribuídas](#Appendix.SQLServer.Options.MSDTC.UsingXA)
  + [Como usar transações XA](#MSDTC.XA)
  + [Usar rastreamento de transações](#MSDTC.Tracing)
+ [Desabilitar o MSDTC](Appendix.SQLServer.Options.MSDTC.Disable.md)
+ [Solução de problemas do MSDTC para o RDS for SQL Server](Appendix.SQLServer.Options.MSDTC.Troubleshooting.md)

## Limitações
<a name="Appendix.SQLServer.Options.MSDTC.Limitations"></a>

As seguintes limitações se aplicam ao uso do MSDTC no RDS for SQL Server:
+ Não há suporte para o MSDTC em instâncias que usam o SQL Server Database Mirroring. Para obter mais informações, consulte [Transações – grupos de disponibilidade e espelhamento de banco de dados](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).
+ O parâmetro `in-doubt xact resolution` deve ser definido como 1 ou 2. Para obter mais informações, consulte [Modificar o parâmetro para o MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC).
+ O MSDTC requer que todos os hosts participantes em transações distribuídas sejam resolvidos usando os nomes de host. O RDS mantém automaticamente essa funcionalidade para instâncias associadas ao domínio. No entanto, para instâncias autônomas, configure o servidor DNS manualmente.
+ As transações XA do Java Database Connectivity (JDBC) são compatíveis com a versão 14.00.3223.3 e superior do SQL Server 2017 e o SQL Server 2019.
+ Não há suporte para transações distribuídas que dependem de bibliotecas de links dinâmicos (DLLs) do cliente em instâncias do RDS.
+ Não há suporte para o uso de bibliotecas de links dinâmicos XA personalizadas.

# Habilitar o MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Enabling"></a>

Use o seguinte processo para habilitar o MSDTC para a instância de banco de dados:

1. Crie um grupo de opções ou selecione um existente.

1. Adicione a opção `MSDTC` ao grupo de opções.

1. Crie um novo grupo de parâmetros ou escolha um existente.

1. Modifique o grupo de parâmetros para definir o parâmetro `in-doubt xact resolution` como 1 ou 2.

1. Associe o grupo de opções e o grupo de parâmetros à instância de banco de dados.

## Criar o grupo de opções para o MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

Use o Console de gerenciamento da AWS ou a AWS CLI para criar um grupo de opções que corresponda à versão e ao mecanismo do SQL Server da instância de banco de dados.

**nota**  
Também é possível usar um grupo de opções existente se ele for para a versão e o mecanismo e corretos do SQL Server.

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

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2016.

**Como criar o grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha **Create group (Criar grupo)**.

1. No painel **Create option group (Criar grupo de opções)**, faça o seguinte:

   1. Em **Name** (Nome), insira um nome para o grupo de opções que seja exclusivo na sua conta da AWS, como **msdtc-se-2016**. O nome pode conter somente letras, números e hifens.

   1. Em **Descrição**, insira uma breve descrição do grupo de opções, como **MSDTC option group for SQL Server SE 2016**. A descrição é usada para fins de exibição. 

   1. Em **Engine (Mecanismo)**, selecione **sqlserver-se**.

   1. Em **Versão do mecanismo principal**, selecione **13.00**.

1. Escolha **Criar**.

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

O exemplo a seguir cria um grupo de opções para o SQL Server Standard Edition 2016.

**Como criar o grupo de opções**
+ Use um dos seguintes comandos.  
**Example**  

  Para 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"
  ```

  Para 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"
  ```

## Adicionar a opção do MSDTC ao grupo de opções
<a name="Appendix.SQLServer.Options.MSDTC.Add"></a>

Depois, use o Console de gerenciamento da AWS ou a AWS CLI para adicionar a opção `MSDTC` ao grupo de opções.

São necessárias as seguintes configurações de opção:
+ **Porta** – a porta que você usa para acessar o MSDTC. Os valores permitidos são 1150–49151, exceto 1234, 1434, 3260, 3343, 3389 e 47001. O valor padrão é 5000.

  Verifique se a porta que pretende usar está habilitada nas regras de firewall. Além disso, conforme necessário, verifique se essa porta está habilitada nas regras de entrada e saída para o grupo de segurança associado à instância de banco de dados. Para ter mais informações, consulte [Não é possível conectar-se à instância de banco de dados do Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting). 
+ **Security groups** (Grupos de segurança): as associações de grupo de segurança da VPC para a instância de banco de dados do RDS.
+ **Tipo de autenticação** – o modo de autenticação entre hosts. Os seguintes tipos de autenticação são compatíveis:
  + Mútuo – as instâncias do RDS são autenticadas mutuamente entre si usando autenticação integrada. Se esta opção estiver selecionada, todas as instâncias associadas a este grupo de opções deverão estar associadas ao domínio.
  + Nenhum – nenhuma autenticação é realizada entre hosts. Não recomendamos usar esse modo em ambientes de produção.
+ **Tamanho do log de transações** – o tamanho do log de transações do MSDTC. Os valores permitidos são de 4 a 1024 MB. O tamanho padrão é 4 MB.

As seguintes configurações de opção são opcionais:
+ **Habilitar conexões de entrada** – se deseja permitir conexões de entrada do MSDTC para instâncias associadas a este grupo de opções.
+ **Habilitar conexões de saída** – se deseja permitir conexões de saída do MSDTC em instâncias associadas a este grupo de opções.
+ **Habilitar XA** – se deseja permitir transações XA. Para obter mais informações sobre o protocolo XA, consulte [XA Specification](https://publications.opengroup.org/c193).
+ **Habilitar SNA LU** – se deseja permitir que o protocolo SNA LU seja usado para transações distribuídas. Para obter mais informações sobre o suporte ao protocolo SNA LU, consulte [Managing IBM CICS LU 6.2 Transactions](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85)) na documentação da Microsoft.

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

**Como adicionar a opção do MSDTC**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções que você acabou de criar.

1. Escolha **Add option (Adicionar opção)**.

1. Em **Detalhes da opção**, selecione **MSDTC** em **Nome da opção**.

1. Em **Configurações de opção**:

   1. Em **Porta**, insira o número da porta para acessar o MSDTC. O padrão é **5000**.

   1. Em **Security groups (Grupos de segurança)**, selecione o grupo de segurança da VPC a ser associado à opção.

   1. Em **Tipo de autenticação**, escolha **Mútuo** ou **Nenhum**.

   1. Em **Tamanho do log de transações**, insira um valor de 4 a 1024. O padrão é **4**.

1. Em **Configuração adicional**, faça o seguinte:

   1. Em **Conexões**, conforme necessário, escolha **Habilitar conexões de entrada** e **Habilitar conexões de saída**.

   1. Em **Protocolos permitidos**, conforme necessário, escolha **Habilitar XA** e **Habilitar SNA LU**.

1. Em **Scheduling (Programação)**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Add option (Adicionar opção)**.

   Nenhuma reinicialização é necessária para adicionar essa opção.

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

**Como adicionar a opção do MSDTC**

1. Crie um arquivo JSON, por exemplo `msdtc-option.json`, com os seguintes parâmetros necessários:

   ```
   {
   "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. Adicione a opção `MSDTC` ao grupo de opções.  
**Example**  

   Para Linux, macOS ou Unix:

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

   Para Windows:

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

   Nenhuma reinicialização é necessária.

## Criar o grupo de parâmetros para o MSDTC
<a name="MSDTC.CreateParamGroup"></a>

Crie ou modifique um grupo de parâmetros para o parâmetro `in-doubt xact resolution` que corresponde à edição e à versão do SQL Server da instância de banco de dados.

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

O exemplo a seguir cria um grupo de parâmetros para o SQL Server Standard Edition 2016.

**Como criar o grupo de parâmetros**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Parameter groups** (Grupos de parâmetros).

1. Escolha **Create parameter group (Criar parameter group)**.

1. No painel**Create parameter group (Criar parameter group)**, faça o seguinte:

   1. Em **Família de grupos de parâmetros**, escolha **sqlserver-se-13.0**.

   1. Em **Nome do grupo**, insira um identificador para o grupo de parâmetros, como **msdtc-sqlserver-se-13**.

   1. Em **Descrição**, insira **in-doubt xact resolution**.

1. Escolha **Criar**.

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

O exemplo a seguir cria um grupo de parâmetros para o SQL Server Standard Edition 2016.

**Como criar o grupo de parâmetros**
+ Use um dos seguintes comandos.  
**Example**  

  Para 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"
  ```

  Para 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"
  ```

## Modificar o parâmetro para o MSDTC
<a name="ModifyParam.MSDTC"></a>

Modifique o parâmetro `in-doubt xact resolution` no grupo de parâmetros que corresponde à edição e à versão do SQL Server da instância de banco de dados.

Para o MSDTC, defina o parâmetro `in-doubt xact resolution` como um dos seguintes procedimentos:
+ `1`: `Presume commit`. Presume-se que as transações em dúvida do MSDTC foram confirmadas.
+ `2`: `Presume abort`. Presume-se que as transações em dúvida do MSDTC foram interrompidas.

Para obter mais informações, consulte [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) na documentação da Microsoft.

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

O exemplo a seguir modifica o grupo de parâmetros que você criou para o SQL Server Standard Edition 2016.

**Como modificar o grupo de parâmetros**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, selecione **Parameter groups**.

1. Escolha o grupo de parâmetros, como **msdtc-sqlserver-se-13**.

1. Em **Parâmetros**, filtre a lista de parâmetros para **xact**.

1. Escolha **resolução xact em dúvida**.

1. Escolha **Edit parameters**.

1. Insira **1** ou **2**.

1. Escolha **Salvar alterações**.

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

O exemplo a seguir modifica o grupo de parâmetros que você criou para o SQL Server Standard Edition 2016.

**Como modificar o grupo de parâmetros**
+ Use um dos seguintes comandos.  
**Example**  

  Para 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"
  ```

  Para 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"
  ```

## Associar o grupo de opções e o grupo de parâmetros à instância de banco de dados.
<a name="MSDTC.Apply"></a>

É possível usar o Console de gerenciamento da AWS ou a AWS CLI para associar o grupo de opções e o grupo de parâmetros do MSDTC à instância de banco de dados.

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

É possível associar o grupo de opções e o grupo de parâmetros do MSDTC a uma instância de banco de dados nova ou existente.
+ Para uma nova instância de banco de dados, associe-os ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, associe-os modificando a instância. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).
**nota**  
Se você usar uma instância de banco de dados existente associada ao domínio, ela já deverá ter um domínio do Active Directory e uma função do AWS Identity and Access Management (IAM) associados a ela. Se você criar uma nova instância associada ao domínio, especifique um domínio do Active Directory e uma função do IAM existentes. Para ter mais informações, consulte [Trabalhar com o AWS Managed Active Directory com o RDS para SQL Server](USER_SQLServerWinAuth.md).

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

É possível associar o grupo de opções e o grupo de parâmetros do MSDTC a uma instância de banco de dados nova ou existente.

**nota**  
Se você usar uma instância de banco de dados existente associada ao domínio, ela já deverá ter um domínio do Active Directory e uma função do IAM associados a ela. Se você criar uma nova instância associada ao domínio, especifique um domínio do Active Directory e uma função do IAM existentes. Para obter mais informações, consulte [Trabalhar com o AWS Managed Active Directory com o RDS para SQL Server](USER_SQLServerWinAuth.md).

**Como criar uma instância de banco de dados com o grupo de opções e o grupo de parâmetros do MSDTC**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de opções.  
**Example**  

  Para 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
  ```

  Para 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
  ```

**Como modificar uma instância de banco de dados e associar o grupo de opções e o grupo de parâmetros do MSDTC**
+ Use um dos seguintes comandos.  
**Example**  

  Para 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
  ```

  Para 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
  ```

## Modificar a opção do MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Modify"></a>

Depois de habilitar a opção `MSDTC`, é possível modificar as configurações. Para obter informações sobre como modificar as configurações da opção, consulte [Modificar uma configuração de opção](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

**nota**  
Algumas alterações às configurações de opção do MSDTC exigem que o serviço MSDTC seja reiniciado. Esse requisito pode afetar a execução de transações distribuídas.

## Usar transações
<a name="Appendix.SQLServer.Options.MSDTC.Using"></a>

### Usar transações distribuídas
<a name="Appendix.SQLServer.Options.MSDTC.UsingXA"></a>

No Amazon RDS for SQL Server, você executa transações distribuídas da mesma maneira que transações distribuídas em execução no local:
+ Usando transações promovíveis `System.Transactions` do .NET framework, que otimiza transações distribuídas ao adiar as criações até que sejam necessárias.

  Neste caso, a promoção é automática e não requer que você faça qualquer intervenção. Se houver apenas um gerenciador de recursos dentro da transação, nenhuma promoção será executada. Para obter mais informações sobre escopos de transação implícita, consulte [Implementing an implicit transaction using transaction scope](https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/implementing-an-implicit-transaction-using-transaction-scope) na documentação da Microsoft.

  As transações promovíveis são compatíveis com estas implementações .NET: 
  + Começando com o ADO.NET 2.0, `System.Data.SqlClient` oferece suporte a transações promovíveis com o SQL Server. Para obter mais informações, consulte [System.Transactions integration with SQL Server](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/system-transactions-integration-with-sql-server) na documentação da Microsoft.
  + O ODP.NET oferece suporte a `System.Transactions`. Uma transação local é criada para a primeira conexão aberta no escopo `TransactionsScope` para o Oracle Database 11g release 1 (versão 11.1) e posterior. Quando uma segunda conexão é aberta, essa transação é automaticamente promovida para uma transação distribuída. Para obter mais informações sobre suporte de transações distribuídas no ODP.NET, consulte [Microsoft Distributed Transaction Coordinator integration](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/ntmts/using-mts-with-oracledb.html) na documentação da Microsoft.
+ Usando a instrução `BEGIN DISTRIBUTED TRANSACTION`. Para obter mais informações, consulte [BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql) na documentação da Microsoft.

### Como usar transações XA
<a name="MSDTC.XA"></a>

A partir da versão 14.00.3223.3 do RDS para SQL Server 2017, você pode controlar transações distribuídas usando o JDBC. Quando você define a opção `Enable XA` para `true` na opção `MSDTC`, o RDS habilita automaticamente as transações do JDBC e concede a função `SqlJDBCXAUser` ao usuário `guest`. Isso permite a execução de transações distribuídas por meio do JDBC. Para obter mais informações, incluindo um exemplo de código, consulte [Noções básicas sobre transações XA](https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions) na documentação da Microsoft.

### Usar rastreamento de transações
<a name="MSDTC.Tracing"></a>

O RDS oferece suporte ao controle de rastreamentos de transação do MSDTC e ao download deles na instância de banco de dados do RDS para solução de problemas. É possível controlar sessões de rastreamento de transação executando o procedimento armazenado do RDS a seguir.

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

O parâmetro a seguir é obrigatório.
+ `trace_action` – A ação de rastreamento. Ela pode ser: `START`, `STOP` ou `STATUS`.

Os seguintes parâmetros são opcionais:
+ `@traceall` – Defina como 1 para rastrear todas as transações distribuídas. O padrão é 0.
+ `@traceaborted` – Defina como 1 para rastrear transações distribuídas canceladas. O padrão é 0.
+ `@tracelong` – Defina como 1 para rastrear transações distribuídas de execução longa. O padrão é 0.

**Example de ação de rastreamento START**  
Para iniciar uma nova sessão de rastreamento de transação, execute o exemplo de instrução a seguir.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'START',
@traceall='0',
@traceaborted='1',
@tracelong='1';
```
Apenas uma sessão de rastreamento de transação pode estar ativa ao mesmo tempo. Se um novo comando de sessão de rastreamento `START` for emitido enquanto uma sessão de rastreamento estiver ativa, um erro será retornado e a sessão de rastreamento ativa permanecerá inalterada.

**Example de ação de rastreamento STOP**  
Para interromper uma sessão de rastreamento de transação, execute a instrução a seguir.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
```
Esta instrução interrompe a sessão de rastreamento de transação ativa e salva os dados de rastreamento de transação no diretório de log na instância de banco de dados do RDS. A primeira linha da saída contém o resultado geral e as linhas a seguir indicam os detalhes da operação.  
Veja a seguir um exemplo de uma interrupção de sessão de rastreamento bem-sucedida.  

```
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
```
É possível usar as informações detalhadas para consultar o nome do arquivo de log gerado. Para obter mais informações sobre como baixar arquivos de log na instância de banco de dados do RDS, consulte [Monitorar arquivos de log do Amazon RDS](USER_LogAccess.md).  
Os logs de sessão de rastreamento permanecem na instância por 35 dias. Todos os logs de sessão de rastreamento mais antigos são excluídos automaticamente.

**Example de ação de rastreamento STATUS**  
Para rastrear o status de uma sessão de rastreamento de transação, execute a instrução a seguir.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STATUS'
```
Esta instrução gera o seguinte como linhas separadas do conjunto de resultados.  

```
OK
SessionStatus: <Started|Stopped>
TraceAll: <True|False>
TraceAborted: <True|False>
TraceLongLived: <True|False>
```
A primeira linha indica o resultado geral da operação: `OK` ou `ERROR` com detalhes, se aplicável. As linhas subsequentes indicam detalhes sobre o status da sessão de rastreamento:   
+ `SessionStatus` pode ser um dos seguintes:
  + `Started` se uma sessão de rastreamento estiver sendo executada.
  + `Stopped` se nenhuma sessão de rastreamento estiver sendo executada.
+ Os sinalizadores de sessão de rastreamento podem ser `True` ou `False` dependendo de como foram definidos no comando `START`.

# Desabilitar o MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Disable"></a>

Para desabilitar o MSDTC, remova a opção `MSDTC` do grupo de opções.

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

**Como remover a opção do MSDTC do grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `MSDTC` (`msdtc-se-2016` nos exemplos anteriores).

1. Selecione **Delete option (Excluir opção)**.

1. Em **Opções de exclusão**, selecione **MSDTC** em **Opções a serem excluídas**.

1. Em **Apply immediately (Aplicar imediatamente)**, selecione **Yes (Sim)** para excluir a opção imediatamente ou **No (Não)** para excluí-la na próxima janela de manutenção.

1. Escolha **Excluir**.

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

**Como remover a opção do MSDTC do grupo de opções**
+ Use um dos seguintes comandos.  
**Example**  

  Para Linux, macOS ou Unix:

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

  Para Windows:

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

# Solução de problemas do MSDTC para o RDS for SQL Server
<a name="Appendix.SQLServer.Options.MSDTC.Troubleshooting"></a>

Em alguns casos, talvez você tenha problemas para estabelecer uma conexão entre o MSDTC em execução em um computador cliente e o serviço do MSDTC em execução em uma instância de banco de dados do RDS for SQL Server. Em caso afirmativo, verifique o seguinte:
+ As regras de entrada do grupo de segurança associado à instância de banco de dados estão configuradas corretamente. Para obter mais informações, consulte [Não é possível conectar-se à instância de banco de dados do Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).
+ O computador cliente está configurado corretamente.
+ As regras de firewall do MSDTC no computador cliente estão habilitadas.

**Como configurar o computador cliente**

1. Abra os **Serviços de componentes**.

   Ou, no **Gerenciador de servidores**, escolha **Ferramentas** e **Serviços de componentes**.

1. Expanda **Serviços de componentes**, **Computadores**, **Meu computador** e **Distributed Transaction Coordinator**.

1. Abra o menu de contexto (clique com o botão direito do mouse) do **DTC local** e escolha **Propriedades**.

1. Escolha a guia **Segurança**.

1. Escolha todas as opções a seguir:
   + **Acesso ao DTC de rede**
   + **Permitir entrada**
   + **Permitir Saída**

1. Certifique-se de que o modo de autenticação correto seja escolhido:
   + **Autenticação mútua necessária** – a máquina cliente é associada ao mesmo domínio que outros nós que participam da transação distribuída ou existe uma relação de confiança configurada entre domínios.
   + **Nenhuma autenticação necessária** – todos os outros casos.

1. Escolha **OK** para salvar as alterações.

1. Se solicitado a reiniciar o serviço, escolha **Sim**.

**Como habilitar regras de firewall do MSDTC**

1. Abra o Firewall do Windows e escolha **Configurações avançadas**.

   Ou, no **Gerenciador de servidores**, escolha **Ferramentas** e selecione **Firewall do Windows com segurança avançada**.
**nota**  
Dependendo do sistema operacional, o Firewall do Windows pode ser chamado de Firewall do Windows Defender.

1. Escolha **Regras de entrada** no painel esquerdo.

1. Habilite as seguintes regras de firewall, se elas ainda não estiverem habilitadas:
   + **Distributed Transaction Coordinator (RPC)**
   + **Distributed Transaction Coordinator (RPC)-EPMAP**
   + **Distributed Transaction Coordinator (TCP-In)**

1. Feche o Firewall do Windows.