Partilhar via


Realizando transações em ODBC

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure do Azure Synapse AnalyticsAnalytics 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 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 SQLNCLI fornecido como um componente do Mecanismo de Banco de Dados do SQL Server (versões de 2012 a 2019), consulte esta exceção do ciclo de vida do suporte.

As transações no ODBC são gerenciadas no nível da conexão. Quando um aplicativo conclui uma transação, ele confirma ou reverte todo o trabalho concluído através de todos os identificadores de instrução nessa conexão. Para confirmar ou reverter uma transação, os aplicativos devem chamar SQLEndTran em vez de enviar uma instrução COMMIT ou ROLLBACK.

Um aplicativo chama SQLSetConnectAttr para alternar entre os dois modos ODBC de gerenciamento de transações:

  • Modo de confirmação automática

    Cada declaração é confirmada automaticamente quando é concluída com sucesso. Quando você executa no modo de confirmação automática, nenhuma outra função de gerenciamento de transações é necessária.

  • Modo de confirmação manual

    Todas as instruções executadas são incluídas na mesma transação até que ela seja especificamente interrompida chamando SQLEndTran.

O modo de confirmação automática é o modo de transação padrão para ODBC. Quando uma conexão é feita, ela fica no modo de confirmação automática até que SQLSetConnectAttr seja chamado para alternar para o modo de confirmação manual definindo o modo de confirmação automática desativado. Quando um aplicativo desativa a confirmação automática, a próxima instrução enviada ao banco de dados inicia uma transação. A transação permanece em vigor até que o aplicativo chame SQLEndTran com as opções SQL_COMMIT ou SQL_ROLLBACK. O comando enviado para o banco de dados depois que SQLEndTran inicia a próxima transação.

Se um aplicativo mudar do modo de confirmação manual para o modo de confirmação automática, o driver confirmará todas as transações atualmente abertas na conexão.

Os aplicativos ODBC não devem usar Transact-SQL instruções de transação, como START TRANSACTION, COMMIT TRANSACTION ou ROLLBACK TRANSACTION porque isso pode causar um comportamento indeterminado no driver. Um aplicativo ODBC deve ser executado no modo de confirmação automática e não usar nenhuma função ou instrução de gerenciamento de transações, ou executar no modo de confirmação manual e usar a função ODBC SQLEndTran para confirmar ou reverter transações.