事务的类型
Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 支持两种事务类型:显式事务和自动提交事务。
显式事务
显式事务是指显式定义了其启动和结束的事务。可以通过使用 SQL 语句或数据库 API 函数来指定显式事务。
SQL 语句
通过 SQL Server Management Studio,可以使用下列 SQL 语句来定义显式事务:
- BEGIN TRANSACTION
为一个连接标记出显式事务的起始点。 - COMMIT TRANSACTION
在没有出现错误时成功结束事务。由事务修改的所有数据都会永久成为数据库的一部分。事务所持有的资源将被释放。 - ROLLBACK TRANSACTION
清除出现错误的事务。由事务修改的所有数据都将返回到事务启动时的状态。事务所持有的资源将被释放。
ADO.NET 和 OLE DB
您也可以在 ADO .NET 和 OLE DB 中使用显式事务。
在 ADO .NET 中,可在 SqlCeConnection 对象上使用 BeginTransaction 方法启动一个显式事务。若要结束该事务,请调用 SqlCeTransaction 对象的 Commit 或 Rollback 方法。
在 OLE DB 中,调用 ITransactionLocal::StartTransaction 方法来启动一个事务。调用 ITransaction::Commit 或 ITransaction::Abort 方法并将 fRetaining 设置为 FALSE 可结束该事务,而不自动启动另一个事务。
注意: |
---|
您可以在单个 ADO .NET 连接上创建多个事务,并将其分配给各个命令。 |
重要事项: |
---|
当您使用 ADO .NET API 提交事务时,应关闭该事务中的所有已打开的数据读取器和结果集。 |
自动提交事务
自动提交模式是 SQL Server Compact Edition 的默认事务管理模式。每个 SQL 语句完成后都会被提交或回滚。当这一默认模式未被显式事务所覆盖时,SQL Server Compact Edition 连接以自动提交模式运行。自动提交模式同时也是 ADO .NET 和 OLE DB 的默认模式。
除非 BEGIN TRANSACTION 语句启动一个显式事务,否则 SQL Server Compact Edition 连接以自动提交模式运行。提交或回滚显式事务后,SQL Server Compact Edition 将返回自动提交模式。
编译和运行时错误
与 Microsoft SQL Server 不同,SQL Server Compact Edition 不能成批处理语句。SQL Server Compact Edition 每次只处理一个语句,并且分别执行各个语句。如果一个特定的语句返回一个错误,这并不影响它所属的批中包含的任何其他语句的状态。例如,如果将 SQL Server Management Studio 用于执行 SQL Server Compact Edition 中的下列查询集,前面的两个查询会成功,但第三个会由于出现语法错误而失败。
CREATE TABLE TestData (col int);
INSERT INTO TestData VALUES (1);
INSERTT INTO TestData VALUES (1);
注意: |
---|
如果将这些查询作为一批发送到 SQL Server,则所有查询都将失败,因为对这些查询的分析是一起进行的。语法错误会导致 SQL Server 无法为整个批创建执行计划。 |
在其中发生操作的更高一级的事务既不会回滚该事务,也不会提交该事务。
请参阅
概念
事务 (SQL Server Compact Edition)
控制事务
事务和连接