0

我在一台机器上运行了几个应用程序,该机器上还有一个 MSSQL 服务器。

应用程序有多种类型,如 WPF、WCF Service、MVC App 等。他们都访问唯一的数据库,该数据库位于 sql server 上。访问模式是简单的 LinQ-to-SQL 类调用。

在每个数据库连接中,我都会进行一些查询、一些检查和一些数据库写入。

我的问题是:通过使用简单实例,我能否确定这些事务范围内的调用不会同时运行(线程和进程安全)?TransactionScope

4

1 回答 1

0

使用事务范围显然会使特定的连接成为事务性的。使用事务范围本身并不会阻止机器上的两个不同进程同时执行相同的操作。它确实确保执行的所有操作都已提交或回滚。每个进程看到的数据视图取决于隔离级别,默认情况下是可序列化的,这很容易导致死锁。一个更实用的隔离级别是读取提交,最好使用快照隔离,因为这进一步减少了死锁和等待时间。

如果您想确保只有一个应用程序实例在做某事,您可以使用互斥锁或使用所有不同进程将尝试获取并在必要时等待的数据库锁。

于 2012-07-11T11:42:31.203 回答