2009-06-19 82 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

相關問題