5

我们有一些数据列表通过 SqlCommandSELECT在 SQL Server 数据库上执行查询在我们的应用程序中获取。我们没有在 SqlCommand 上显式设置事务,而只是将 SqlConnection 传递给它并运行它。是否在没有指定事务时 SQL Server 将启动并使用默认 IsolationLevel 的默认事务ReadCommitted

4

2 回答 2

8

SQL 为您的语句隐式创建一个事务,并在语句完成时提交该事务。此事务的隔离级别将是当前的隔离级别,默认为 READ COMMITTED。某些语句会覆盖当前的隔离级别并强制执行 READ COMMITTED(例如 RECEIVE)。

如果您的 SqlCommand 执行批处理(更多语句),则访问表的每个语句都将创建自己的事务。

事务的默认自动提交是通过更改 SET IMPLICIT_TRANSACTION ON 来控制的。

有关更多详细信息,请参阅控制事务

于 2009-06-19T09:52:13.633 回答
3

SQL Server 可以在没有显式事务的情况下愉快地工作。但是,是的,我相信它本质上是读提交的(当然,除非您向查询对象添加额外的提示,例如UPDLOCK/ NOLOCK)。您可以通过以下方式对此进行调查:

DBCC USEROPTIONS

其中显示(除其他外):

isolation level read committed
于 2009-06-19T09:25:22.300 回答