Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Importante
SQL Server Native Client (SNAC) não é fornecido com:
- SQL Server 2022 (16.x) e versões posteriores
- SQL Server Management Studio 19 e versões posteriores
O SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o Microsoft OLE DB Provider for SQL Server (SQLOLEDB) herdado não são recomendados para o desenvolvimento de novos aplicativos.
Para novos projetos, use um dos seguintes drivers:
Para o SQLNCLI fornecido como componente do Mecanismo de Base de Dados do SQL Server (versões de 2012 a 2019), consulte esta exceção ao Ciclo de Vida de Suporte .
Uma transação distribuída pode ser criada para diferentes sistemas Microsoft SQL de diferentes formas.
O driver ODBC chama o MSDTC para o SQL Server on-premises
O Coordenador de Transações Distribuídas da Microsoft (MSDTC) permite que aplicações estendam ou distribuam uma transação em duas ou mais instâncias do SQL Server. A transação distribuída funciona mesmo quando as duas instâncias estão alojadas em computadores separados.
O MSDTC está instalado para Microsoft SQL Server on-premises, mas não está disponível para o serviço cloud Base de Dados SQL do Azure da Microsoft.
O MSDTC é chamado pelo driver SQL Server Native Client for Open Database Connectivity (ODBC), quando o seu programa C++ gere uma transação distribuída. O driver ODBC do Native Client tem um gestor de transações que está em conformidade com o padrão XA Open Group Distributed Transaction Processing (DTP). Esta conformidade é exigida pela MSDTC. Normalmente, todos os comandos de gestão de transações são enviados através deste driver ODBC do Cliente Nativo. A sequência é a seguinte:
A sua aplicação ODBC Native Client C++ inicia uma transação chamando SQLSetConnectAttr, com o modo autocommit desligado.
A aplicação atualiza alguns dados no SQL Server X no computador A.
A aplicação atualiza alguns dados no SQL Server Y no computador B.
- Se uma atualização no SQL Server Y falhar, todas as atualizações não comprometidas em ambas as instâncias do SQL Server são revertidas.
Finalmente, a aplicação termina a transação chamando SQLEndTran (1), com a opção SQL_COMMIT ou SQL_ROLLBACK.
(1) A MSDTC pode ser invocada sem ODBC. Nesse caso, o MSDTC torna-se o gestor de transações, e a aplicação deixa de usar SQLEndTran.
Apenas uma transação distribuída
Suponha que a sua aplicação ODBC Native Client C++ está registada numa transação distribuída. De seguida, a aplicação inscreve-se numa segunda transação distribuída. Neste caso, o driver ODBC do SQL Server Native Client sai da transação distribuída original e inscreve-se na nova transação distribuída.
Para mais informações, consulte a Referência do Programador DTC.
Alternativa a C# para base de dados SQL na cloud
O MSDTC não é suportado nem para Base de Dados SQL do Azure nem para Azure Synapse Analytics.
No entanto, uma transação distribuída pode ser criada para a base de dados SQL fazendo com que o seu programa C# utilize a classe .NET System.Transactions.TransactionScope.
Outras linguagens de programação
As seguintes outras linguagens de programação podem não fornecer suporte para transações distribuídas com o serviço SQL Database:
- C++ nativo que usa drivers ODBC
- Servidor ligado usando Transact-SQL
- Pilotos JDBC