BeginTransaction没有调用BEGIN TRANSACTION

时间:2009-09-09 09:25:57

标签: sql .net-2.0 transactions

我有一些使用BeginTransaction()的简单代码。生成的事务将分配给我用于某些sql命令的连接。

当我分析生成的sql时,我在任何时候都看不到BEGIN TRANSACTION。可能会发生什么阻止交易被使用?

3 个答案:

答案 0 :(得分:2)

使用ADO.NET时,事务处理程度较低。没有“BEGIN TRANSACTION”语句发送到服务器。

答案 1 :(得分:0)

您需要确保不仅要在连接对象上设置事务,还需要将事务分配到sqlCommand中。

有关示例,请参阅this codeproject文章。

答案 2 :(得分:0)

重申菲利普的声明:

使用ADO.NET时,会在较低级别处理事务。没有“BEGIN TRANSACTION”语句发送到服务器。

在某些时候,SQL必须转换为实际调用。大多数ADO.NET(我曾经使用过的)经常向BEGIN,COMMIT和ROLLBACK事务发送一个特定于数据库的命令,因为发送ASCII(或其他任何东西)的效率低于服务器解析的内容。

这就是为什么发送参数化查询通常比基于纯SQL的查询更快,因为库可以发送特定命令,这样可以减少解析并减少数据验证(?)。

HTH!