

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Unterstützung für Microsoft Distributed Transaction Coordinator in RDS für SQL Server
<a name="Appendix.SQLServer.Options.MSDTC"></a>

Eine *verteilte Transaktion* ist eine Datenbanktransaktion, an der zwei oder mehr Netzwerkhosts beteiligt sind. RDS für SQL Server unterstützt verteilte Transaktionen zwischen Hosts, wobei ein einzelner Host einer der folgenden sein kann:
+ RDS für SQL Server-DB-Instance
+ Lokaler SQL Server-Host
+ Amazon EC2-Host mit installiertem SQL Server
+ Alle anderen EC2-Host- oder RDS-DB-Instances mit einer Datenbank-Engine, die verteilte Transaktionen unterstützt

In RDS, beginnend mit SQL Server 2012 (Version 11.00.5058.0.v1 und höher), unterstützen alle Editionen von RDS für SQL Server verteilte Transaktionen. Die Unterstützung wird mithilfe von Microsoft Distributed Transaction Coordinator (MSDTC) bereitgestellt. Ausführliche Informationen zu MSDTC finden Sie unter [Distributed Transaction Coordinator](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms684146(v=vs.85)) in der Microsoft-Dokumentation.

**Contents**
+ [Einschränkungen](#Appendix.SQLServer.Options.MSDTC.Limitations)
+ [Aktivieren von MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md)
  + [Erstellen der Optionsgruppe für MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.OptionGroup)
  + [Hinzufügen der MSDTC-Option zur Optionsgruppe](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Add)
  + [Erstellen der Parametergruppe für MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.CreateParamGroup)
  + [Ändern des Parameters für MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)
  + [Zuordnen der Options- und Parametergruppe zur DB-Instance](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.Apply)
  + [Ändern der MSDTC-Option](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Modify)
+ [Verwenden von Transaktionen](#Appendix.SQLServer.Options.MSDTC.Using)
  + [Verwenden verteilter Transaktionen](#Appendix.SQLServer.Options.MSDTC.UsingXA)
  + [XA-Transaktionen verwenden](#MSDTC.XA)
  + [Verwenden der Transaktionsnachverfolgung](#MSDTC.Tracing)
+ [Deaktivieren von MSDTC](Appendix.SQLServer.Options.MSDTC.Disable.md)
+ [Problembehandlung bei MSDTC für RDS für SQL Server](Appendix.SQLServer.Options.MSDTC.Troubleshooting.md)

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

Die folgenden Einschränkungen gelten für die Verwendung von MSDTC auf RDS für SQL Server:
+ MSDTC wird auf Instances, welche die SQL Server-Datenbankspiegelung verwenden, nicht unterstützt. Weitere Informationen finden Sie unter [Transaktionen - Verfügbarkeitsgruppen und Datenbankspiegelung](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).
+ Der Parameter `in-doubt xact resolution` muss auf 1 oder 2 gesetzt werden. Weitere Informationen finden Sie unter [Ändern des Parameters für MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC).
+ MSDTC erfordert, dass alle Hosts, die an verteilten Transaktionen beteiligt sind, mit ihren Hostnamen auflösbar sind. RDS verwaltet diese Funktionalität automatisch für domänengebundene Instances. Achten Sie jedoch bei eigenständigen Instances darauf, den DNS-Server manuell zu konfigurieren.
+ XA-Transaktionen (Java Database Connectivity) werden für SQL Server 2017, Version 14.00.3223.3 und höher, und SQL Server 2019, unterstützt.
+ Verteilte Transaktionen, die von Client-Dynamic-Link-Bibliotheken (DLLs) auf RDS-Instances abhängen, werden nicht unterstützt.
+ Die Verwendung benutzerdefinierter dynamischer XA-Verknüpfungsbibliotheken wird nicht unterstützt.

# Aktivieren von MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Enabling"></a>

Verwenden Sie den folgenden Prozess, um MSDTC für Ihre DB-Instance zu aktivieren:

1. Erstellen Sie eine neue Optionsgruppe oder wählen Sie eine bestehende Optionsgruppe aus.

1. Fügen Sie die Option `MSDTC` zur Optionsgruppe hinzu.

1. Erstellen Sie eine neue Parametergruppe oder wählen Sie eine vorhandene Parametergruppe aus.

1. Ändern Sie die Parametergruppe, um den Parameter `in-doubt xact resolution` auf 1 oder 2 festzulegen.

1. Ordnen Sie die Optionsgruppe und die Parametergruppe der DB-Instance zu.

## Erstellen der Optionsgruppe für MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

Verwenden Sie die AWS-Managementkonsole oder AWS CLI, um eine Optionsgruppe zu erstellen, die der SQL Server-Engine und der Version Ihrer DB-Instance entspricht.

**Anmerkung**  
Sie können auch eine vorhandene Optionsgruppe verwenden, wenn es sich um die korrekte SQL Server-Engine und -Version handelt.

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

Mit der folgenden Konsolenprozedur wird eine Optionsgruppe für SQL Server Standard Edition 2016 erstellt.

**So erstellen Sie die Optionsgruppe**

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Option groups (Optionsgruppen)** aus.

1. Wählen Sie **Create group (Gruppe erstellen)** aus.

1. Führen Sie im Bereich **Create option group (Optionsgruppe erstellen)** Folgendes aus:

   1. Geben Sie unter **Name** einen Namen für die Optionsgruppe ein, der innerhalb Ihres AWS-Kontos nur einmal vorkommt, z. B. **msdtc-se-2016**. Der Name darf nur Buchstaben, Ziffern und Bindestriche enthalten.

   1. Geben Sie unter **Beschreibung** eine kurze Beschreibung der Optionsgruppe ein, z. B. **MSDTC option group for SQL Server SE 2016**. Die Beschreibung ist nur zur Information. 

   1. Wählen Sie für **Engine** die Option **sqlserver-se** aus.

   1. Wählen Sie im Feld **Engine-Hauptversion** **13.00** aus.

1. Wählen Sie **Erstellen** aus.

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

Im folgenden Beispiel wird eine Optionsgruppe für SQL Server Standard Edition 2016 erstellt.

**So erstellen Sie die Optionsgruppe**
+ Verwenden Sie einen der folgenden Befehle.  
**Example**  

  Für Linux, macOS oder 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"
  ```

  Für 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"
  ```

## Hinzufügen der MSDTC-Option zur Optionsgruppe
<a name="Appendix.SQLServer.Options.MSDTC.Add"></a>

Verwenden Sie als Nächstes die AWS-Managementkonsole oder AWS CLI, um die Option `MSDTC` zur Optionsgruppe hinzuzufügen.

Die folgenden Optionseinstellungen sind erforderlich:
+ **Port** – Der Port, den Sie für den Zugriff auf MSDTC verwenden. Zulässige Werte sind 1150–49151 mit Ausnahme von 1234, 1434, 3260, 3343, 3389 und 47001. Der Standardwert ist 5000.

  Stellen Sie sicher, dass der zu verwendende Port in den Firewall-Regeln aktiviert ist. Stellen Sie außerdem sicher, dass dieser Port bei Bedarf in den ein- und ausgehenden Regeln für die Sicherheitsgruppe aktiviert ist, die Ihrer DB-Instance zugeordnet ist. Weitere Informationen finden Sie unter [Verbindung zur Amazon-RDS-DB-Instance kann nicht hergestellt werden](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting). 
+ **Sicherheitsgruppen** – Die VPC-Sicherheitsgruppenmitgliedschaften für Ihre RDS-DB-Instance.
+ **Authentifizierungstyp** – Der Authentifizierungsmodus zwischen Hosts. Die folgenden Authentifizierungstypen werden unterstützt:
  + Gegenseitig – Die RDS-Instances werden gegenseitig mittels integrierter Authentifizierung authentifiziert. Wenn diese Option ausgewählt ist, müssen alle Instances, die dieser Optionsgruppe zugeordnet sind, einer Domäne zugeordnet sein.
  + Keine – Es wird keine Authentifizierung zwischen Hosts durchgeführt. Es wird nicht empfohlen, diesen Modus in Produktionsumgebungen zu verwenden.
+ **Transaktionsprotokollgröße** – Die Größe des MSDTC-Transaktionsprotokolls. Zulässige Werte sind 4–1024 MB. Die Standardgröße beträgt 4 MB.

Die folgenden Optionseinstellungen sind optional:
+ **Eingehende Verbindungen aktivieren** – Gibt an, ob eingehende MSDTC-Verbindungen zu Instances zugelassen werden sollen, die dieser Optionsgruppe zugeordnet sind.
+ **Ausgehende Verbindungen aktivieren** – Gibt an, ob ausgehende MSDTC-Verbindungen von Instances zugelassen werden sollen, die dieser Optionsgruppe zugeordnet sind.
+ **XA aktivieren** – Gibt an, ob XA-Transaktionen zugelassen werden sollen. Weitere Informationen zum XA-Protokoll finden Sie unter [XA-Spezifikation](https://publications.opengroup.org/c193).
+ **SNA LU aktivieren** – Gibt an, ob das SNA LU-Protokoll für verteilte Transaktionen verwendet werden kann. Weitere Informationen zur Unterstützung des SNA LU-Protokolls finden Sie unter [Verwalten von IBM CICS LU 6.2-Transaktionen](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85)) in der Microsoft-Dokumentation.

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

**So fügen Sie die MSDTC-Option hinzu**

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Option groups (Optionsgruppen)** aus.

1. Wählen Sie die Optionsgruppe aus, die Sie gerade erstellt haben.

1. Wählen Sie **Add option (Option hinzufügen)**.

1. Wählen Sie unter **Optionsdetails** für **Optionsname** die Option **MSDTC** aus.

1. Unter **Optionseinstellungen**:

   1. Geben Sie unter **Port** die Portnummer für den Zugriff auf MSDTC ein. Der Standardwert ist **5000**.

   1. Wählen Sie für **Security groups (Sicherheitsgruppen)** die VPC-Sicherheitsgruppe aus, die der Option zugeordnet werden soll.

   1. Wählen Sie für **Authentifizierungstyp** die Option **Gegenseitig** oder **Keine** aus.

   1. Geben Sie für **Transaktionsprotokollgröße** einen Wert von 4–1024 ein. Der Standardwert ist **4**.

1. Führen Sie unter **Zusätzliche Konfiguration** die folgenden Schritte aus:

   1. Wählen Sie für **Verbindungen** nach Bedarf die Option **Eingehende Verbindungen aktivieren** und **Ausgehende Verbindungen aktivieren** aus.

   1. Wählen Sie für **Zulässige Protokolle** nach Bedarf die Option **XA aktivieren** und **SNA LU aktivieren** aus.

1. Wählen Sie unter **Scheduling (Planung)** aus, ob die Option sofort oder während des nächsten Wartungsfensters hinzugefügt werden soll.

1. Wählen Sie **Add option (Option hinzufügen)**.

   Um diese Option hinzuzufügen, ist kein Neustart erforderlich.

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

**So fügen Sie die MSDTC-Option hinzu**

1. Erstellen Sie beispielsweise `msdtc-option.json`, eine JSON-Datei mit den folgenden erforderlichen Parametern.

   ```
   {
   "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. Fügen Sie die Option `MSDTC` zur Optionsgruppe hinzu.  
**Example**  

   Für Linux, macOS oder Unix:

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

   Für Windows:

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

   Es ist kein Neustart erforderlich.

## Erstellen der Parametergruppe für MSDTC
<a name="MSDTC.CreateParamGroup"></a>

Erstellen oder ändern Sie eine Parametergruppe für den `in-doubt xact resolution`-Parameter, der der SQL Server-Edition und der Version Ihrer DB-Instance entspricht.

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

Im folgenden Beispiel wird eine Parametergruppe für SQL Server Standard Edition 2016 erstellt.

**So erstellen Sie die Parametergruppe**

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Parameter groups (Parametergruppen)** aus.

1. Wählen Sie **Create parameter group (Parametergruppe erstellen)**.

1. Führen Sie im Bereich **Parametergruppe erstellen** die folgenden Schritte aus:

   1. Wählen Sie für **Parametergruppenfamilie** die Option **sqlserver-se-13.0** aus.

   1. Geben Sie unter **Gruppenname** einen Bezeichner für die Parametergruppe ein, z. B. **msdtc-sqlserver-se-13**.

   1. Geben Sie für **Beschreibung** den Text **in-doubt xact resolution** ein.

1. Wählen Sie **Erstellen** aus.

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

Im folgenden Beispiel wird eine Parametergruppe für SQL Server Standard Edition 2016 erstellt.

**So erstellen Sie die Parametergruppe**
+ Verwenden Sie einen der folgenden Befehle.  
**Example**  

  Für Linux, macOS oder 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"
  ```

  Für 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"
  ```

## Ändern des Parameters für MSDTC
<a name="ModifyParam.MSDTC"></a>

Ändern Sie den `in-doubt xact resolution`-Parameter in der Parametergruppe, die der SQL Server-Edition und der Version Ihrer DB-Instance entspricht.

Legen Sie für MSDTC den `in-doubt xact resolution`-Parameter auf einen der folgenden Parameter fest:
+ `1` – `Presume commit`. Alle unsicheren MSDTC-Transaktionen werden als übermittelt angesehen.
+ `2` – `Presume abort`. Alle unsicheren MSDTC-Transaktionen werden als gestoppt angesehen.

Weitere Informationen finden Sie unter [Lösung für unklare Transaktion (Serverkonfigurationsoption)](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/in-doubt-xact-resolution-server-configuration-option) in der Microsoft-Dokumentation.

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

Im folgenden Beispiel wird die Parametergruppe geändert, die Sie für SQL Server Standard Edition 2016 erstellt haben.

**So ändern Sie die Parametergruppe**

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Parameter groups (Parametergruppen)** aus.

1. Wählen Sie die Parametergruppe aus, z. B. **msdtc-sqlserver-se-13**.

1. Filtern Sie unter **Parameter** die Parameterliste nach **xact**.

1. Wählen Sie **in-doubt xact resolution** aus.

1. Wählen Sie **Parameter bearbeiten** aus.

1. Geben Sie **1** oder **2** ein.

1. Wählen Sie **Änderungen speichern ** aus.

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

Im folgenden Beispiel wird die Parametergruppe geändert, die Sie für SQL Server Standard Edition 2016 erstellt haben.

**So ändern Sie die Parametergruppe**
+ Verwenden Sie einen der folgenden Befehle.  
**Example**  

  Für Linux, macOS oder 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"
  ```

  Für 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"
  ```

## Zuordnen der Options- und Parametergruppe zur DB-Instance
<a name="MSDTC.Apply"></a>

Sie können die AWS-Managementkonsole oder AWS CLI verwenden, um die MSDTC-Optionsgruppe und die Parametergruppe der DB-Instance zuzuordnen.

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

Sie können die MSDTC-Optionsgruppe und die Parametergruppe einer neuen oder vorhandenen DB-Instance zuordnen.
+ Ordnen Sie sie bei einer neuen DB-Instance zu, wenn Sie die Instance starten. Weitere Informationen finden Sie unter [Erstellen einer Amazon-RDS-DB-Instance](USER_CreateDBInstance.md).
+ Ordnen Sie sie für eine vorhandene DB-Instance zu, indem Sie die Instance ändern. Weitere Informationen finden Sie unter [Ändern einer Amazon-RDS-DB-Instance](Overview.DBInstance.Modifying.md).
**Anmerkung**  
Wenn Sie eine vorhandene Instance verwenden, die einer Domäne beigetreten ist, muss ihr bereits eine Active Directory-Domäne und eine AWS Identity and Access Management (IAM)-Rolle zugeordnet sein. Wenn Sie eine neue Instance erstellen, die einer Domäne beigetreten ist, geben Sie eine vorhandene Active Directory-Domäne und IAM-Rolle an. Weitere Informationen finden Sie unter [Arbeiten mit AWS Managed Active Directory mit RDS für SQL Server](USER_SQLServerWinAuth.md).

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

Sie können die MSDTC-Optionsgruppe und die Parametergruppe einer neuen oder vorhandenen DB-Instance zuordnen.

**Anmerkung**  
Wenn Sie eine vorhandene Instance verwenden, die einer Domäne beigetreten ist, muss ihr bereits eine Active Directory-Domäne und eine IAM-Rolle zugeordnet sein. Wenn Sie eine neue Instance erstellen, die einer Domäne beigetreten ist, geben Sie eine vorhandene Active Directory-Domäne und IAM-Rolle an. Weitere Informationen finden Sie unter [Arbeiten mit AWS Managed Active Directory mit RDS für SQL Server](USER_SQLServerWinAuth.md).

**So erstellen Sie eine DB-Instance mit der MSDTC-Optionsgruppe und der Parametergruppe**
+ Geben Sie denselben DB-Engine-Typ und dieselbe Hauptversion an, die Sie beim Erstellen der Optionsgruppe verwendet haben.  
**Example**  

  Für Linux, macOS oder 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
  ```

  Für 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
  ```

**So ändern Sie eine DB-Instance und ordnen die MSDTC-Optionsgruppe und die Parametergruppe zu**
+ Verwenden Sie einen der folgenden Befehle.  
**Example**  

  Für Linux, macOS oder 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
  ```

  Für 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
  ```

## Ändern der MSDTC-Option
<a name="Appendix.SQLServer.Options.MSDTC.Modify"></a>

Nachdem Sie die Option `MSDTC` aktiviert haben, können Sie ihre Einstellungen ändern. Weitere Informationen über das Ändern von Optionseinstellungen finden Sie unter [Ändern einer Optionseinstellung](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

**Anmerkung**  
Bei einigen Änderungen an den MSDTC-Optionseinstellungen muss der MSDTC-Service neu gestartet werden. Diese Anforderung kann sich auf die Ausführung verteilter Transaktionen auswirken.

## Verwenden von Transaktionen
<a name="Appendix.SQLServer.Options.MSDTC.Using"></a>

### Verwenden verteilter Transaktionen
<a name="Appendix.SQLServer.Options.MSDTC.UsingXA"></a>

In Amazon RDS für SQL Server führen Sie verteilte Transaktionen auf die gleiche Weise aus wie verteilte Transaktionen, die lokal ausgeführt werden:
+ Mithilfe von heraufstufbaren `System.Transactions`-Transaktionen im .NET Framework, die verteilte Transaktionen optimieren, indem ihre Erstellung so lange verschoben wird, bis sie benötigt werden.

  In diesem Fall erfolgt die Heraufstufung automatisch und erfordert keine Intervention. Wenn nur ein Ressourcenmanager innerhalb der Transaktion vorhanden ist, wird keine Heraufstufung durchgeführt. Weitere Informationen zu impliziten Transaktionsbereichen finden Sie unter [Implementieren einer impliziten Transaktion mit Transaktionsbereich](https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/implementing-an-implicit-transaction-using-transaction-scope) in der Microsoft-Dokumentation.

  Heraufstufbare Transaktionen werden mit folgenden .NET-Implementierungen unterstützt: 
  + Beginnend mit ADO.NET 2.0 unterstützt `System.Data.SqlClient` heraufstufbare Transaktionen mit SQL Server. Weitere Informationen finden Sie unter [System.Transactions-Integration in SQL Server](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/system-transactions-integration-with-sql-server) in der Microsoft-Dokumentation.
  + ODP.NET unterstützt `System.Transactions`. Für die erste Verbindung, die im `TransactionsScope`-Bereich zu Oracle Database 11g Release 1 (Version 11.1) und höher geöffnet wurde, wird eine lokale Transaktion erstellt. Wenn eine zweite Verbindung geöffnet wird, wird diese Transaktion automatisch zu einer verteilten Transaktion heraufgestuft. Weitere Informationen zur Unterstützung verteilter Transaktionen in ODP.NET finden Sie unter [Microsoft Distributed Transaction Coordinator-Integration](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/ntmts/using-mts-with-oracledb.html) in der Microsoft-Dokumentation.
+ Verwenden der `BEGIN DISTRIBUTED TRANSACTION`-Anweisung. Weitere Informationen finden Sie unter [BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql) in der Microsoft-Dokumentation.

### XA-Transaktionen verwenden
<a name="MSDTC.XA"></a>

Ab RDS für SQL Server 2017, Version 14.00.3223.3, können Sie verteilte Transaktionen mit JDBC steuern. Wenn Sie die`Enable XA`Optionseinstellung auf`true`im`MSDTC`aktiviert, aktiviert RDS automatisch JDBC-Transaktionen und gewährt die`SqlJDBCXAUser`-Rolle auf die`guest`-Benutzer. Dies ermöglicht die Ausführung verteilter Transaktionen über JDBC. Weitere Informationen, einschließlich eines Code-Beispiels, finden Sie unter unter.[XA-Transaktionen](https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions)in der Microsoft-Dokumentation.

### Verwenden der Transaktionsnachverfolgung
<a name="MSDTC.Tracing"></a>

RDS unterstützt die Steuerung von MSDTC-Transaktionsnachverfolgungen und deren Herunterladen aus der RDS-DB-Instance zur Fehlerbehebung. Sie können Transaktionsnachverfolgungssitzungen steuern, indem Sie die folgende gespeicherte RDS-Prozedur ausführen.

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

Der folgende Parameter ist erforderlich:
+ `trace_action` – Die Nachverfolgungsaktion. Sie kann `START`, `STOP` oder `STATUS` sein.

Die folgenden Parameter sind optional:
+ `@traceall` – Setzen Sie auf 1, um alle verteilten Transaktionen nachzuverfolgen. Der Standardwert ist 0.
+ `@traceaborted` – Setzen Sie auf 1, um abgebrochene verteilte Transaktionen nachzuverfolgen. Der Standardwert ist 0.
+ `@tracelong` – Setzen Sie auf 1, um zeitintensive verteilte Transaktionen zu verfolgen. Der Standardwert ist 0.

**Example mit START-Nachverfolgungsaktion**  
Um eine neue Transaktionsnachverfolgungssitzung zu starten, führen Sie die folgende Beispielanweisung aus.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'START',
@traceall='0',
@traceaborted='1',
@tracelong='1';
```
Es kann nur eine Transaktionsnachverfolgungssitzung gleichzeitig aktiv sein. Wenn ein neuer `START`-Befehl für die Nachverfolgungssitzung ausgegeben wird, während eine Nachverfolgungssitzung aktiv ist, wird ein Fehler zurückgegeben, und die aktive Nachverfolgungssitzung bleibt unverändert.

**Example mit STOP-Nachverfolgungsaktion**  
Um eine Transaktionsnachverfolgungssitzung zu beenden, führen Sie die folgende Anweisung aus.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
```
Diese Anweisung stoppt die aktive Transaktionsnachverfolgungssitzung und speichert die Transaktionsnachverfolgungsdaten im Protokollverzeichnis der RDS-DB-Instance. Die erste Zeile der Ausgabe enthält das Gesamtergebnis und die folgenden Zeilen zeigen Details der Operation an.  
Im Folgenden finden Sie ein Beispiel für einen erfolgreichen Sitzungsstopp der Nachverfolgung.  

```
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
```
Mit den detaillierten Informationen können Sie den Namen der generierten Protokolldatei abfragen. Weitere Informationen zum Herunterladen von Protokolldateien aus der RDS-DB-Instance finden Sie unter [Überwachen von Amazon RDS-Protokolldateien](USER_LogAccess.md).  
Die Nachverfolgungssitzungsprotokolle verbleiben 35 Tage lang auf der Instance. Ältere Nachverfolgungssitzungsprotokolle werden automatisch gelöscht.

**Example mit STATUS-Nachverfolgungsaktion**  
Um den Status einer Transaktionsnachverfolgungssitzung nachzuverfolgen, führen Sie die folgende Anweisung aus.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STATUS'
```
Diese Anweisung gibt Folgendes als separate Zeilen der Ergebnismenge aus.  

```
OK
SessionStatus: <Started|Stopped>
TraceAll: <True|False>
TraceAborted: <True|False>
TraceLongLived: <True|False>
```
Die erste Zeile gibt das Gesamtergebnis der Operation an: `OK` oder gegebenenfalls `ERROR` mit Details. Die folgenden Zeilen zeigen Details zum Status der Nachverfolgungssitzung an:   
+ `SessionStatus` kann einer der folgenden sein:
  + `Started`, wenn eine Nachverfolgungssitzung ausgeführt wird.
  + `Stopped`, wenn keine Nachverfolgungssitzung ausgeführt wird.
+ Die Protokollierungssitzungs-Flags können `True` oder `False` abhängig davon sein, wie sie im `START`-Befehl festgelegt wurden.

# Deaktivieren von MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Disable"></a>

Um MSDTC zu deaktivieren, entfernen Sie die Option `MSDTC` aus der Optionsgruppe.

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

**So entfernen Sie die MSDTC-Option aus der Optionsgruppe**

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Option groups (Optionsgruppen)** aus.

1. Wählen Sie die Optionsgruppe mit der Option `MSDTC` (`msdtc-se-2016` in den vorherigen Beispielen).

1. Wählen Sie **Delete option (Option löschen)** aus.

1. Wählen Sie unter **Löschoptionen** für **Zu löschende Optionen** die Option **MSDTC** aus.

1. Wählen Sie unter **Apply immediately (Sofort anwenden)** die Option **Yes (Ja)** aus, um die Option sofort zu löschen, oder **No (Nein)**, um sie während des nächsten Wartungsfensters zu löschen.

1. Wählen Sie **Delete (Löschen)**.

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

**So entfernen Sie die MSDTC-Option aus der Optionsgruppe**
+ Verwenden Sie einen der folgenden Befehle.  
**Example**  

  Für Linux, macOS oder Unix:

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

  Für Windows:

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

# Problembehandlung bei MSDTC für RDS für SQL Server
<a name="Appendix.SQLServer.Options.MSDTC.Troubleshooting"></a>

In einigen Fällen haben Sie möglicherweise Probleme beim Herstellen einer Verbindung zwischen MSDTC, der auf einem Client-Computer ausgeführt wird, und dem MSDTC-Dienst, der auf einer RDS für SQL Server-DB-Instance ausgeführt wird. Wenn ja, stellen Sie Folgendes sicher:
+ Die eingehenden Regeln für die Sicherheitsgruppe, die der DB-Instance zugeordnet ist, sind korrekt konfiguriert. Weitere Informationen finden Sie unter [Verbindung zur Amazon-RDS-DB-Instance kann nicht hergestellt werden](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).
+ Der Client-Computer ist korrekt konfiguriert.
+ Die MSDTC-Firewall-Regeln auf Ihrem Client-Computer sind aktiviert.

**So konfigurieren Sie den Client-Computer**

1. Öffnen Sie **Komponentendienste**.

   Oder wählen Sie im **Server-Manager** die Option **Tools** und dann **Komponentendienste** aus.

1. Erweitern Sie **Komponentendienste**, erweitern Sie **Computer**, erweitern Sie **Arbeitsplatz** und erweitern Sie dann **Distributed Transaction Coordinator**.

1. Öffnen Sie das Kontextmenü (Rechtsklick) für **Lokaler DTC** und wählen Sie **Eigenschaften** aus.

1. Wählen Sie die Registerkarte **Sicherheit** aus.

1. Wählen Sie alle der folgenden Optionen aus:
   + **Netzwerk-DTC-Zugriff**
   + **Eingehende zulassen**
   + **Ausgehende zulassen**

1. Stellen Sie sicher, dass der richtige Authentifizierungsmodus gewählt ist:
   + **Gegenseitige Authentifizierung erforderlich** – Der Client-Computer ist mit derselben Domäne verbunden wie andere Knoten, die an einer verteilten Transaktion beteiligt sind, oder es ist eine Vertrauensstellung zwischen Domänen konfiguriert.
   + **Keine Authentifizierung erforderlich** – Alle anderen Fälle.

1. Wählen Sie **OK** aus, um Ihre Änderungen zu speichern.

1. Wenn Sie aufgefordert werden, den Dienst neu zu starten, wählen Sie **Ja**.

**So aktivieren Sie MSDTC-Firewall-Regeln**

1. Öffnen Sie die Windows-Firewall und wählen Sie dann **Erweiterte Einstellungen** aus.

   Oder wählen Sie im **Server-Manager** die Option **Tools** und dann **Windows-Firewall mit erweiterter Sicherheit** aus.
**Anmerkung**  
Abhängig von Ihrem Betriebssystem wird die Windows-Firewall möglicherweise als Windows Defender Firewall bezeichnet.

1. Wählen Sie im linken Bereich die Option **Eingehende Regeln** aus.

1. Aktivieren Sie die folgenden Firewall-Regeln, wenn sie noch nicht aktiviert sind:
   + **Distributed Transaction Coordinator (RPC)**
   + **Distributed Transaction Coordinator (RPC)-EPMAP**
   + **Distributed Transaction Coordinator (TCP-In)**

1. Schließen Sie die Windows-Firewall.