Compartilhar via


Tipos de transações

O Microsoft SQL Server Compact oferece suporte a dois tipos de transações: explícita e de confirmação automática.

Transações explícitas

Uma transação explícita é aquela na qual você define explicitamente o início e o término da transação. Isso pode ser especificado usando as instruções SQL ou funções de API do banco de dados.

Instruções SQL

Usando o Visual Studio, as seguintes instruções SQL podem ser usadas para definir transações explícitas:

  • BEGIN TRANSACTION

    Marca o ponto inicial de uma transação explícita para uma conexão.

  • COMMIT TRANSACTION

    Finaliza uma transação com êxito se nenhum erro for encontrado. Todos os dados modificados pela transação se tornam uma parte permanente do banco de dados. Os recursos mantidos pela transação são liberados.

  • ROLLBACK TRANSACTION

    Apaga uma transação na qual são encontrados erros. Todos os dados modificados pela transação retornam ao estado em que estavam no início da transação. Os recursos mantidos pela transação são liberados.

ADO.NET e OLE DB

Você também pode usar transações explícitas no ADO.NET e no OLE DB.

No ADO.NET, use o método BeginTransaction em um objeto SqlCeConnection para iniciar uma transação explícita. Para terminar a transação, chame os métodos Commit ou Rollback do objeto SqlCeTransaction.

No OLE DB, chame o método ITransactionLocal::StartTransaction para iniciar uma transação. Chame o método ITransaction::Commit ou ITransaction::Abort, com fRetaining configurado como FALSE para finalizar a transação sem iniciar outra transação automaticamente. Observe que você pode criar várias transações em uma única conexão do ADO.NET e atribuí-las para comandos individuais.

Importante

Quando você confirma transações usando a API do ADO.NET, todos os leitores de dados e conjuntos de resultados abertos dentro daquela transação devem ser fechados.

Transações de confirmação automática

O modo de confirmação automática é o modo de gerenciamento de transações padrão do SQL Server Compact. Cada instrução SQL é confirmada ou revertida quando concluída. Uma conexão do SQL Server Compact opera no modo de confirmação automática sempre que esse modo padrão não é substituído por transações explícitas. O modo de confirmação automática também é o modo padrão do ADO.NET e do OLE DB.

Uma conexão do SQL Server Compact opera no modo de confirmação automática até que uma instrução BEGIN TRANSACTION inicie uma transação explícita. Quando a transação explícita é confirmada ou revertida, o SQL Server Compact retorna ao modo de confirmação automática.

Erros de compilação e tempo de execução

Diferente do SQL Server, o SQL Server Compact não processa as instruções em lotes. O SQL Server Compact processa as instruções uma por vez e executa cada uma delas individualmente. Se uma determinada instrução retornar um erro, isso não afetará nenhuma outra instrução incluída no lote. Por exemplo, se o Visual Studio fosse usado para executar o seguinte conjunto de consultas no SQL Server Compact, as primeiras duas consultas teriam êxito, mas a terceira falharia devido ao erro de sintaxe.

CREATE TABLE TestData (col int);

INSERT INTO TestData VALUES (1);

INSERTT INTO TestData VALUES (1);

Dica

Se essas consultas fossem enviadas como um lote para o SQL Server, todas as consultas falhariam porque seriam analisadas juntas. O erro de sintaxe impede que o SQL Server crie um plano de execução para o lote.

As transações de nível superior nas quais uma operação ocorre não revertem nem confirmam a transação.

Consulte também

Conceitos

Transações (SQL Server Compact)

Controlando transações

Outros recursos

Transações e conectividade