Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Important
SQL Server Native Client (SNAC) wordt niet geleverd met:
- SQL Server 2022 (16.x) en latere versies
- SQL Server Management Studio 19 en latere versies
De SQL Server Native Client (SQLNCLI of SQLNCLI11) en de verouderde Microsoft OLE DB-provider voor SQL Server (SQLOLEDB) worden niet aanbevolen voor de ontwikkeling van nieuwe toepassingen.
Gebruik een van de volgende stuurprogramma's voor nieuwe projecten:
Voor SQLNCLI die als onderdeel van SQL Server Database Engine (versies 2012 tot en met 2019) wordt geleverd, raadpleegt u deze uitzondering voor de levenscyclus van ondersteuning.
Een gedistribueerde transactie kan op verschillende manieren worden aangemaakt voor verschillende Microsoft SQL-systemen.
ODBC-driver roept de MSDTC aan voor SQL Server on-premises
De Microsoft Distributed Transaction Coordinator (MSDTC) stelt applicaties in staat een transactie uit te breiden of te distribueren over twee of meer instanties van SQL Server. De gedistribueerde transactie werkt zelfs wanneer de twee instanties op verschillende computers worden gehost.
MSDTC is geïnstalleerd voor Microsoft SQL Server on-premises, maar is niet beschikbaar voor Microsoft's Azure SQL Database cloudservice.
MSDTC wordt aangeroepen door de SQL Server Native Client driver voor Open Database Connectivity (ODBC), wanneer je C++-programma een gedistribueerde transactie beheert. De Native Client ODBC-driver heeft een transactiemanager die voldoet aan de Open Group Distributed Transaction Processing (DTP) XA-standaard. Deze naleving is vereist door MSDTC. Doorgaans worden alle transactiebeheercommando's via deze Native Client ODBC-driver gestuurd. De volgorde is als volgt:
Je C++ Native Client ODBC-applicatie start een transactie door SQLSetConnectAttr aan te roepen, waarbij de autocommit-modus is uitgeschakeld.
De applicatie werkt wat gegevens bij op SQL Server X op computer A.
De applicatie werkt wat data bij op SQL Server Y op computer B.
- Als een update op SQL Server Y faalt, worden alle niet-committed updates op beide SQL Server-instanties teruggerold.
Ten slotte beëindigt de applicatie de transactie door SQLEndTran (1) aan te roepen, met de optie SQL_COMMIT of SQL_ROLLBACK.
(1) MSDTC kan worden aangeroepen zonder ODBC. In zo'n geval wordt MSDTC de transactiebeheerder en gebruikt de applicatie SQLEndTran niet meer.
Slechts één gedistribueerde transactie
Stel dat je C++ Native Client ODBC-applicatie wordt opgenomen in een gedistribueerde transactie. Vervolgens wordt een tweede gedistribueerde transactie uitgevoerd. In dit geval verlaat de SQL Server Native Client ODBC-driver de oorspronkelijke gedistribueerde transactie en meldt zich aan bij de nieuwe gedistribueerde transactie.
Voor meer informatie, zie DTC Programmer's Reference.
C#-alternatief voor SQL Database in de cloud
MSDTC wordt niet ondersteund voor noch Azure SQL Database noch Azure Synapse Analytics.
Echter, een gedistribueerde transactie kan worden gemaakt voor SQL Database door je C#-programma de .NET-klasse System.Transactions.TransactionScope te laten gebruiken.
Andere programmeertalen
De volgende andere programmeertalen bieden mogelijk geen ondersteuning voor gedistribueerde transacties met de SQL Database-service:
- Native C++ die ODBC-drivers gebruiken
- Gekoppelde server die Transact-SQL
- JDBC-coureurs