2009-06-19 63 views
5

我们在我们的应用程序中通过SqlCommand在SQL Server数据库上执行SELECT查询获取一些数据列表。我们没有明确地在SqlCommand上设置一个事务,而只是传递一个SqlConnection并运行它。在没有指定事务的情况下,SQL Server将启动并使用缺省事务处理,默认IsolationLevel为ReadCommitted在没有指定交易的情况下执行SQLCommand

回答

3

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

DBCC USEROPTIONS 

其中显示了(包括其他):你可以调查这个

isolation level read committed 
5

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

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

默认autocommit of transactions通过更改SET IMPLICIT_TRANSACTION ON来控制。

查看Controlling Transactions了解更多详情。

+0

也许我在这里有同样的问题:http://stackoverflow.com/questions/41096727/is-there-an-implicit-transaction-in-sqlcommand-executenonquery – VansFannel 2016-12-12 11:47:12

相关问题