Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Si applica a: SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di strumenti analitici (PDW)
Importante
SQL Server Native Client (SNAC) non viene fornito con:
- SQL Server 2022 (16.x) e versioni successive
- SQL Server Management Studio 19 e versioni successive
SQL Server Native Client (SQLNCLI o SQLNCLI11) e il provider OLE DB Microsoft legacy per SQL Server (SQLOLEDB) non sono consigliati per lo sviluppo di nuove applicazioni.
Per i nuovi progetti, usare uno dei driver seguenti:
Per SQLNCLI fornito come componente del motore di database di SQL Server (versioni dal 2012 al 2019), vedere questa Eccezione relativa al ciclo di vita del supporto.
È possibile creare una transazione distribuita per diversi sistemi Microsoft SQL in modi diversi.
Il driver ODBC chiama MSDTC per SQL Server locale
Microsoft Distributed Transaction Coordinator (MSDTC) consente alle applicazioni di estendere o distribuire una transazione tra due o più istanze di SQL Server. La transazione distribuita funziona anche quando le due istanze sono ospitate in computer separati.
MSDTC è installato per Microsoft SQL Server locale, ma non è disponibile per il servizio cloud di Microsoft database SQL di Azure.
MSDTC viene chiamato dal driver SQL Server Native Client per ODBC (Open Database Connectivity), quando il programma C++ gestisce una transazione distribuita. Il driver ODBC di Native Client dispone di una gestione transazioni conforme allo standard XA DTP (Open Group Distributed Transaction Processing). Questa conformità è richiesta da MSDTC. In genere, tutti i comandi di gestione delle transazioni vengono inviati tramite questo driver ODBC di Native Client. La sequenza è la seguente:
L'applicazione ODBC di C++ Native Client avvia una transazione chiamando SQLSetConnectAttr, con la modalità autocommit disattivata.
L'applicazione aggiorna alcuni dati in SQL Server X nel computer A.
L'applicazione aggiorna alcuni dati in SQL Server Y nel computer B.
- Se un aggiornamento in SQL Server Y ha esito negativo, viene eseguito il rollback di tutti gli aggiornamenti di cui non è stato eseguito il commit in entrambe le istanze di SQL Server.
Infine, l'applicazione termina la transazione chiamando SQLEndTran (1) con l'opzione SQL_COMMIT o SQL_ROLLBACK.
(1) MSDTC può essere richiamato senza ODBC. In questo caso, MSDTC diventa il gestore delle transazioni e l'applicazione non usa più SQLEndTran.
Una sola transazione distribuita
Si supponga che l'applicazione ODBC C++ Native Client sia inclusa in una transazione distribuita. Successivamente, l'applicazione viene inserita in una seconda transazione distribuita. In questo caso, il driver ODBC di SQL Server Native Client lascia la transazione distribuita originale ed esegue l'integrazione nella nuova transazione distribuita.
Per altre informazioni, vedere Guida di riferimento per programmatori DTC.
Alternativa C# per database SQL nel cloud
MSDTC non è supportato per database SQL di Azure o Azure Synapse Analytics.
Tuttavia, è possibile creare una transazione distribuita per database SQL facendo in modo che il programma C# usi la classe .NET System.Transactions.TransactionScope.
Altri linguaggi di programmazione
Gli altri linguaggi di programmazione seguenti potrebbero non fornire alcun supporto per le transazioni distribuite con il servizio database SQL:
- C++ nativo che usano driver ODBC
- Server collegato con Transact-SQL
- Driver JDBC