Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Wichtig
SQL Server Native Client (SNAC) wird nicht ausgeliefert mit:
- SQL Server 2022 (16.x) und höhere Versionen
- SQL Server Management Studio 19 und spätere Versionen
Der SQL Server Native Client (SQLNCLI oder SQLNCLI11) und der Microsoft OLE DB-Legacyanbieter für SQL Server (SQLOLEDB) werden für neue Anwendungsentwicklungen nicht empfohlen.
Für neue Projekte verwenden Sie einen der folgenden Treiber:
Informationen zu SQLNCLI, das als Komponente der SQL Server-Datenbank-Engine (Versionen 2012 bis 2019) verfügbar ist, finden Sie in dieser Ausnahme für den Supportlebenszyklus.
Eine verteilte Transaktion kann für verschiedene Microsoft SQL-Systeme auf unterschiedliche Weise erstellt werden.
ODBC-Treiber ruft msDTC für SQL Server lokal auf
Der Microsoft Distributed Transaction Coordinator (MSDTC) ermöglicht Anwendungen das Erweitern oder Verteilen einer Transaktion über zwei oder mehr Instanzen von SQL Server. Die verteilte Transaktion funktioniert auch dann, wenn die beiden Instanzen auf separaten Computern gehostet werden.
MSDTC wird lokal für Microsoft SQL Server installiert, ist jedoch für den Azure SQL-Datenbank Clouddienst von Microsoft nicht verfügbar.
MSDTC wird vom SQL Server Native Client-Treiber für Open Database Connectivity (ODBC) aufgerufen, wenn Ihr C++-Programm eine verteilte Transaktion verwaltet. Der NATIVE Client ODBC-Treiber verfügt über einen Transaktions-Manager, der mit dem XA-Standard (Open Group Distributed Transaction Processing, DTP) kompatibel ist. Diese Compliance ist von MSDTC erforderlich. In der Regel werden alle Transaktionsverwaltungsbefehle über diesen systemeigenen Client-ODBC-Treiber gesendet. Der Ablauf ist wie folgt:
Ihre C++-Native Client ODBC-Anwendung startet eine Transaktion durch Aufrufen von SQLSetConnectAttr, wobei der AutoCommit-Modus deaktiviert ist.
Die Anwendung aktualisiert einige Daten auf SQL Server X auf Computer A.
Die Anwendung aktualisiert einige Daten auf SQL Server Y auf Computer B.
- Wenn ein Update für SQL Server Y fehlschlägt, werden alle nicht bereitgestellten Updates für beide SQL Server-Instanzen zurückgesetzt.
Schließlich beendet die Anwendung die Transaktion durch Aufrufen von SQLEndTran (1) mit der Option SQL_COMMIT oder SQL_ROLLBACK.
(1) MSDTC kann ohne ODBC aufgerufen werden. In einem solchen Fall wird MSDTC zum Transaktions-Manager, und die Anwendung verwendet sqlEndTran nicht mehr.
Nur eine verteilte Transaktion
Angenommen, Ihre C++-Native Client ODBC-Anwendung wird in einer verteilten Transaktion aufgelistet. Als Nächstes wird die Anwendung in einer zweiten verteilten Transaktion aufgeführt. In diesem Fall verlässt der SQL Server Native Client ODBC-Treiber die ursprüngliche verteilte Transaktion und listet die neue verteilte Transaktion auf.
Weitere Informationen finden Sie in der DTC-Programmierreferenz.
C#-Alternative für SQL-Datenbank in der Cloud
MSDTC wird für Azure SQL-Datenbank oder Azure Synapse Analytics nicht unterstützt.
Eine verteilte Transaktion kann jedoch für SQL-Datenbank erstellt werden, indem Ihr C#-Programm die .NET-Klasse System.Transactions.TransactionScope verwendet.
Weitere Programmiersprachen
Die folgenden anderen Programmiersprachen bieten möglicherweise keine Unterstützung für verteilte Transaktionen mit dem SQL-Datenbank-Dienst:
- Systemeigenes C++ mit ODBC-Treibern
- Verknüpfter Server mit Transact-SQL
- DRIVER