Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Importante
O 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 provedor OLE DB para SQL Server (SQLOLEDB) da Microsoft herdado não são recomendados para desenvolver um novo aplicativo.
Para novos projetos, use um dos seguintes drivers:
Para SQLNCLI que é fornecido como um componente do Mecanismo de Banco de Dados do SQL Server (versões 2012 a 2019), confira esta exceção de Ciclo de Vida de Suporte.
Uma transação distribuída pode ser criada para diferentes sistemas Microsoft SQL de diferentes maneiras.
O driver ODBC chama o MSDTC para SQL Server local
O MSDTC (Coordenador de Transações Distribuídas da Microsoft) permite que os aplicativos 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 hospedadas em computadores separados.
O MSDTC é instalado para o Microsoft SQL Server local, mas não está disponível para o serviço de nuvem do Banco de Dados SQL do Azure da Microsoft.
O MSDTC é chamado pelo driver SQL Server Native Client para ODBC (Open Database Connectivity), quando o programa C++ gerencia uma transação distribuída. O driver ODBC do Native Client tem um gerenciador de transações compatível com o padrão XA do Open Group Distributed Transaction Processing (DTP). Essa conformidade é exigida pelo MSDTC. Normalmente, todos os comandos de gerenciamento de transações são enviados por meio desse driver ODBC do cliente nativo. Esta é a sequência:
Seu aplicativo ODBC do C++ Native Client inicia uma transação chamando SQLSetConnectAttr, com o modo de confirmação automática desativado.
O aplicativo atualiza alguns dados no SQL Server X no computador A.
O aplicativo 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 confirmadas em ambas as instâncias do SQL Server serão revertidas.
Por fim, o aplicativo encerra a transação chamando SQLEndTran (1), com a opção SQL_COMMIT ou SQL_ROLLBACK.
(1) O MSDTC pode ser invocado sem ODBC. Nesse caso, o MSDTC se torna o gerenciador de transações e o aplicativo não usa mais SQLEndTran.
Apenas uma transação distribuída
Suponha que seu aplicativo ODBC do C++ Native Client esteja inscrito em uma transação distribuída. Em seguida, o aplicativo se inscreve em uma segunda transação distribuída. Nesse caso, o driver ODBC do SQL Server Native Client deixa a transação distribuída original e se inscreve na nova transação distribuída.
Para obter mais informações, consulte Referência do programador DTC.
Alternativa C# para Banco de Dados SQL na nuvem
Não há suporte para o MSDTC no Banco de Dados SQL do Azure ou no Azure Synapse Analytics.
No entanto, uma transação distribuída pode ser criada para o Banco de Dados SQL fazendo com que seu programa C# use a classe .NET System.Transactions.TransactionScope.
Outras linguagens de programação
As outras linguagens de programação a seguir podem não fornecer suporte para transações distribuídas com o serviço Banco de Dados SQL:
- C++ nativo que usa drivers ODBC
- Servidor vinculado usando Transact-SQL
- Drivers JDBC