- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近,我们的用户有时会遇到timeout expire error,当他们想要更新数据库上的一些记录时。(我认为数据库中发生了类似死锁的事情)我们的数据库是 SQL Server 2008 R2
,我们的应用程序首先使用 EF5 代码开发。
今天我读了一篇关于在 SQL Server 中使用 READ_COMMITTED_SNAPSHOT
选项的文章,我认为这个选项可以帮助我们防止数据库中的死锁。根据那篇文章,它有两个步骤:
1- 在数据库中激活 READ_COMMITTED_SNAPSHOT
ALTER DATABASE testDatabase SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE testDatabase SET READ_COMMITTED_SNAPSHOT ON;
2- 在代码中使用 READ_COMMITTED_SNAPSHOT
选项:
using (var transactionScope =
new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel= IsolationLevel.Snapshot }))
{
// update some tables using entity framework
context.SaveChanges();
transactionScope.Complete();
}
此示例使用了 TransactionScop
语句。但我们没有使用 TransactionScop
来管理 Transactions
。例如,我们的模型中有继承,当我们调用 .SaveChange()
时,EF
会创建和管理 Transaction
本身。
有没有办法在不使用 TransactionScop
语句的情况下使用 READ_COMMITTED_SNAPSHOT
?
最佳答案
READ_COMMITTED_SNAPSHOT
和 SNAPSHOT_ISOLATION
不是一回事。在数据库上启用 READ_COMMITTED_SNAPSHOT
后,所有 READ COMMITTED
事务都将使用它。
SNAPSHOT_ISOLATION
是一个完全不同的隔离级别,需要像您一样在代码中调用。
进一步阅读: https://msdn.microsoft.com/en-us/library/tcbchxcb(v=vs.110).aspx
关于c# - 首先将 READ_COMMITTED_SNAPSHOT 与 EF 代码结合使用 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17529064/
我想在 SQL Azure 数据库上将 READ_COMMITTED_SNAPSHOT 设置为 ON,但 Azure 不支持以下适用于其他版本的 SQL Server 的代码: ALTER DATAB
简单的问题? 为什么READ_COMMITTED_SNAPSHOT默认情况下未启用? 我猜测是向后兼容性、性能还是两者兼而有之? [编辑]请注意,我感兴趣的是与 READ_COMMITTED 隔离级别
运行需要多长时间 ALTER DATABASE [MySite] SET READ_COMMITTED_SNAPSHOT ON 我刚刚运行了它,花了 10 分钟。 如何检查是否已应用? 最佳答案 您可
我正在尝试运行下面的 SQL 语句: ALTER DATABASE DBNAME SET READ_COMMITTED_SNAPSHOT ON 但是,当我运行它时,它没有完成执行,我必须在 1 小
在 SQL Server 中,默认隔离级别是 READ_COMMITTED,但在 SQL Azure 中,默认级别是 READ_COMMITTED_SNAPSHOT。 假设我将我的 SQL Azure
最近,我们的用户有时会遇到timeout expire error,当他们想要更新数据库上的一些记录时。(我认为数据库中发生了类似死锁的事情)我们的数据库是 SQL Server 2008 R2,我们
我们正在运行 SQL Server 2005 Enterprise SP3,我正在尝试在以 sql server 2005 模式运行的新数据库上启用行版本控制。 查询(针对主数据库): ALTER D
我很好奇在数据库上使用 IsolationLevel.Snapshot 和 SET READ_COMMITTED_SNAPSHOT ON 的效果。 documentation对于 IsolationL
我是一名优秀的程序员,十分优秀!