Executar transações no ODBC

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 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) herdados não são recomendados para o desenvolvimento de novos aplicativos.

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.

As transações em 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 instrução é confirmada automaticamente quando concluída com êxito. Quando o modo de confirmação automática é executado, nenhuma outra função de gerenciamento de transação é necessária.

  • Modo de confirmação manual

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

O modo de confirmação automática é o modo de transação padrão para ODBC. Quando uma conexão é estabelecida, ela está em modo de confirmação automática até SQLSetConnectAttr ser chamado para alternar para o modo de confirmação manual desativando o modo de confirmação automática. Quando um aplicativo desativa a confirmação automática, a instrução seguinte enviada para o banco de dados inicia uma transação. A transação permanece ativa até que o aplicativo chame SQLEndTran com as opções SQL_COMMIT ou SQL_ROLLBACK. O comando enviado para o banco de dados após SQLEndTran inicia a transação seguinte.

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

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

Confira também

Executando transações (ODBC)