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.
Support für Microsoft Distributed Transaction Coordinator RDS für SQL Server
Eine verteilte Transaktion ist eine Datenbanktransaktion, an der zwei oder mehr Netzwerkhosts beteiligt sind. RDSfor SQL Server unterstützt verteilte Transaktionen zwischen Hosts, wobei ein einzelner Host einer der folgenden sein kann:
-
RDSfür SQL Server-DB-Instance
-
Lokaler SQL Serverhost
-
EC2Amazon-Host mit installiertem SQL Server
-
Jeder andere EC2 Host oder jede andere RDS DB-Instance mit einer Datenbank-Engine, die verteilte Transaktionen unterstützt
Ab SQL Server 2012 (Version 11.00.5058.0.v1 und höher) unterstützen alle Editionen von RDS for Server verteilte Transaktionen. RDS SQL Der Support wird mithilfe von Microsoft Distributed Transaction Coordinator (MSDTC) bereitgestellt. Ausführliche Informationen zu MSDTC finden Sie unter Distributed Transaction Coordinator
Inhalt
Einschränkungen
Die folgenden Einschränkungen gelten für die Verwendung von MSDTC on RDS for SQL Server:
-
MSDTCwird auf Instanzen, die SQL Server Database Mirroring verwenden, nicht unterstützt. Weitere Informationen finden Sie unter Transaktionen - Verfügbarkeitsgruppen und Datenbankspiegelung
. -
Der Parameter
in-doubt xact resolution
muss auf 1 oder 2 gesetzt werden. Weitere Informationen finden Sie unter Ändern des Parameters für MSDTC. -
MSDTCsetzt voraus, dass alle Hosts, die an verteilten Transaktionen teilnehmen, mit ihren Hostnamen auflösbar sind. RDSbehält diese Funktionalität für domänengebundene Instanzen automatisch bei. Stellen Sie bei eigenständigen Instanzen jedoch sicher, dass Sie den DNS Server manuell konfigurieren.
-
Java Database Connectivity (JDBC) XA-Transaktionen werden für SQL Server 2017 Version 14.00.3223.3 und höher sowie für Server 2019 unterstützt. SQL
-
Verteilte Transaktionen, die von Client-Dynamic-Link-Bibliotheken (DLLs) auf RDS Instanzen abhängen, werden nicht unterstützt.
-
Die Verwendung benutzerdefinierter dynamischer XA-Verknüpfungsbibliotheken wird nicht unterstützt.
Transaktionen verwenden
Verwenden verteilter Transaktionen
In Amazon RDS for SQL Server führen Sie verteilte Transaktionen genauso aus wie verteilte Transaktionen, die lokal ausgeführt werden:
-
Verwenden von. NETFramework
System.Transactions
Promotable Transactions, das verteilte Transaktionen optimiert, indem ihre Erstellung verzögert 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
in der Microsoft-Dokumentation. Damit werden förderbare Transaktionen unterstützt. NETImplementierungen:
-
Beginnend mitADO. NET2.0,
System.Data.SqlClient
unterstützt werbbare Transaktionen mit dem SQL Server. Weitere Informationen finden Sie unter System.Transactions integration with SQL Serverin der Microsoft-Dokumentation. -
ODP. NETunterstützt
System.Transactions
. Für die erste Verbindung, die imTransactionsScope
-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 finden Sie unterODP. NET, siehe Integration von Microsoft Distributed Transaction Coordinatorin der Microsoft-Dokumentation.
-
-
Verwenden der
BEGIN DISTRIBUTED TRANSACTION
-Anweisung. Weitere Informationen finden Sie unter BEGINDISTRIBUTEDTRANSACTION(Transact-SQL)in der Microsoft-Dokumentation.
XA-Transaktionen verwenden
Ab Version 14.00.3223.3 RDS für SQL Server 2017 können Sie verteilte Transaktionen mithilfe von steuern. JDBC Wenn Sie die Enable XA
Optionseinstellung true
in der Option auf setzen, RDS werden JDBC Transaktionen automatisch aktiviert und dem MSDTC
Benutzer die Rolle zugewiesen. SqlJDBCXAUser
guest
Dies ermöglicht die Ausführung verteilter Transaktionen überJDBC. Weitere Informationen, einschließlich eines Code-Beispiels, finden Sie unter unter.XA-Transaktionen
Verwenden der Transaktionsnachverfolgung
RDSunterstützt die Steuerung von MSDTC Transaktionsablaufverfolgungen und deren Herunterladen von der RDS DB-Instance zur Fehlerbehebung. Sie können Transaktionsablaufverfolgungssitzungen steuern, indem Sie die folgende RDS gespeicherte 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 kannSTART
,STOP
oderSTATUS
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.
Beispiel der START Verfolgungsaktion
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
';
Anmerkung
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.
Beispiel der STOP Rückverfolgungshandlung
Um eine Transaktionsnachverfolgungssitzung zu beenden, führen Sie die folgende Anweisung aus.
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
Diese Anweisung beendet die aktive Transaktionsablaufverfolgungssitzung und speichert die Transaktionsverfolgungsdaten 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 Hinweise zum Herunterladen von Protokolldateien aus der RDS DB-Instance finden Sie unterÜberwachung von Amazon RDS Amazon.
Die Nachverfolgungssitzungsprotokolle verbleiben 35 Tage lang auf der Instance. Ältere Nachverfolgungssitzungsprotokolle werden automatisch gelöscht.
Beispiel der STATUS Tracing-Aktion
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
oderFalse
abhängig davon sein, wie sie imSTART
-Befehl festgelegt wurden.