Tipos de transacciones
Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) es compatible con dos tipos de transacciones: explícitas y de confirmación automática.
Transacciones explícitas
Una transacción explícita es aquella en la que se definen explícitamente el inicio y el final de la transacción. Se pueden especificar mediante instrucciones SQL o funciones API de la base de datos.
Instrucciones SQL
Con SQL Server Management Studio se pueden utilizar las siguientes instrucciones SQL para definir transacciones explícitas:
- BEGIN TRANSACTION
Marca el punto de inicio de una transacción explícita para una conexión. - COMMIT TRANSACTION
Finaliza correctamente una transacción si no se han encontrado errores. Todos los datos modificados por la transacción se convierten en parte permanente de la base de datos. Se liberan los recursos ocupados por la transacción. - ROLLBACK TRANSACTION
Borra una transacción en la que se han encontrado errores. Todos los datos modificados por la transacción vuelven al estado en el que estaban al inicio de la transacción. Se liberan los recursos ocupados por la transacción.
ADO.NET y OLE DB
También puede utilizar transacciones explícitas en ADO.NET y OLE DB.
En ADO.NET, use el método BeginTransaction en un objeto SqlCeConnection para iniciar una transacción explícita.Para finalizar la transacción, llame al método Commit o Rollback del objeto SqlCeTransaction.
En OLE DB, llame al método ITransactionLocal::StartTransaction para iniciar una transacción. Llame al método ITransaction::Commit o ITransaction::Abort, con fRetaining establecido en FALSE para finalizar la transacción sin iniciar otra de forma automática. Tenga en cuenta que puede crear varias transacciones en una sola conexión ADO.NET y asignarlas a comandos individuales.
Importante
Cuando se confirma la transacción mediante la API ADO.NET, deben cerrarse todos los lectores de datos y conjuntos de resultados abiertos en la transacción.
Transacciones de confirmación automática
El modo de confirmación automática es el modo de administración de transacciones predeterminado de SQL Server Compact 3.5. Cada instrucción SQL se confirma o se deshace cuando finaliza. Una conexión de SQL Server Compact 3.5 funciona en modo de confirmación automática siempre que este modo predeterminado no haya sido sustituido por transacciones explícitas. El modo de confirmación automática también es el modo predeterminado para ADO.NET y OLE DB.
Una conexión de SQL Server Compact 3.5 funciona en modo de confirmación automática hasta que una instrucción BEGIN TRANSACTION inicia una transacción explícita. Cuando la transacción explícita se confirma o revierte, SQL Server Compact 3.5 vuelve al modo de confirmación automática.
Errores en tiempo de ejecución y de compilación
A diferencia de SQL Server, SQL Server Compact 3.5 no procesa las instrucciones en lotes. SQL Server Compact 3.5 lo hace de una en una y ejecuta cada instrucción independientemente. Si una instrucción concreta devuelve un error, esto no afecta a las demás instrucciones incluidas en el lote.Por ejemplo, si se utiliza SQL Server Management Studio para ejecutar el siguiente conjunto de consultas en SQL Server Compact 3.5, las dos primeras se realizarían correctamente, pero en la tercera se produciría un error debido al error de sintaxis.
CREATE TABLE TestData (col int);
INSERT INTO TestData VALUES (1);
INSERTT INTO TestData VALUES (1);
Nota
Si estas consultas se enviaran como un lote a SQL Server, se produciría un error en todas ellas, ya que se analizan conjuntamente. El error de sintaxis impide que SQL Server construya un plan de ejecución para el lote.
Las transacciones de nivel superior en las que tiene lugar una operación no revierten ni confirman la transacción.
Vea también
Conceptos
Transacciones (SQL Server Compact)
Controlar transacciones
Transacciones y conectividad