Sql server 如何启用只读提交快照

Sql server 如何启用只读提交快照,sql-server,entity-framework-4,isolation-level,isolation,database-concurrency,Sql Server,Entity Framework 4,Isolation Level,Isolation,Database Concurrency,我想在SQL Server数据库中使用读提交快照,我知道这与快照隔离不同 我想启用读提交快照,因为我遇到死锁问题。我正在使用EF,我认为这将防止许多死锁 阅读其他一些问题,我了解到: 读取提交的快照意味着乐观读取和伪写,而 快照隔离意味着乐观读取和乐观写入 读取提交的快照适用于整个数据库,而快照隔离是事务级的 如果我想启用只读提交快照,下一句话就足够了吗? ALTER DATABASE[DB]将READ_COMMITED_快照设置为ON 还是我也需要这句话? ALTER DATABASE[DB]

我想在SQL Server数据库中使用读提交快照,我知道这与快照隔离不同

我想启用读提交快照,因为我遇到死锁问题。我正在使用EF,我认为这将防止许多死锁

阅读其他一些问题,我了解到:

读取提交的快照意味着乐观读取和伪写,而 快照隔离意味着乐观读取和乐观写入

读取提交的快照适用于整个数据库,而快照隔离是事务级的

如果我想启用只读提交快照,下一句话就足够了吗? ALTER DATABASE[DB]将READ_COMMITED_快照设置为ON

还是我也需要这句话? ALTER DATABASE[DB]设置允许快照隔离打开

我这样问是因为我不完全确定SQL Server用于读取提交快照的机制是否会在没有最后一句话的情况下启用


谢谢

为什么要更改隔离级别?你认为有什么问题可以通过改变隔离来解决吗?隔离级别并不是解决并发问题的灵丹妙药。如果你不清楚这些选项,你将产生更大的问题。换句话说,修复你的EF代码。对数据库的任何调整都不会修复错误的ORM代码我想将读取提交的默认隔离级别(悲观并发模型)更改为读取提交的快照(读取时乐观,写入时悲观)。我了解风险,我只是想确切地知道启用此隔离级别需要什么。你认为我的代码有缺陷并不是一个很有建设性的答案。这是ORMs的标准问题,不需要修改数据库来修复。如果遇到阻塞,则意味着连接和事务保持打开的时间过长,尤其是在导致锁定的更新操作之后。关闭事务/连接(即处理上下文),您的问题就会消失。