【发布时间】:2015-07-27 23:30:21
【问题描述】:
如果我打开一个SqlConnection 到 SQL Server,然后从多个后台线程发出多个查询,所有查询都使用一个连接 - 这些查询是否会按顺序执行(不关心顺序)?
具体来说,如果我在一个查询开始时更改隔离级别,然后在该查询结束时将其恢复 - 此隔离级别是否有可能适用于其他查询?
我认为不是,但想确认。
SQL Server 2008 R2
我说的是System.Data.SqlClient.SqlConnection
【问题讨论】:
-
SqlConnection 不是线程安全的。你不应该在多线程上使用它。您应该改为为每个线程创建一个连接。
-
在多个线程上使用 SqlConnection 对象的唯一安全方法是不要在超过 1 个线程上同时使用它。是的,您在一个线程上更改的任何状态或配置都会“泄漏” " 以这种方式发送到任何后续线程。
-
@LasseV.Karlsen 使用 async/await 怎么样?我认为 THX-1138 是指多个查询在同一连接下同时运行的可能性。
-
我不知道 async/await 会如何改变我的答案,只是说如果你真的问如果我在同一个线程上对同一个连接执行多个异步查询会发生什么,那么我不会不知道。
标签: sql sql-server sql-server-2008-r2 sqlconnection