我正在使用SQL Server 2012时遇到以下错误:
快照隔离事务访问数据库'db1'失败,因为该数据库不允许快照隔离。请使用ALTER DATABASE来允许快照隔离。
这种情况与其他博客所说的不同。我正在从另一个数据库(db1)中查询一个数据库表(db2.table1)(...使用同义词)。出错查询的简化版本如下。
select col1, col2
from db1.tab1 t
inner join db2.table1
where xyz = 'abc'
db1的隔离级别为默认级别(读取已提交),而db2的隔离级别为快照隔离。
以上查询在100次执行中有5次会出现上述错误消息。
此查询使用Entity Framework 6执行,并是应用程序中其他类似查询的一部分。该应用程序对所有其他操作都依赖于db2。
欢迎任何建议。
注意--> 我无法将db1的隔离级别设置为快照隔离作为解决方案。
SNAPSHOT
隔离能够工作? - Dan GuzmanREAD_COMMITTED_SNAPSHOT
)?还是只是允许它存在?如果它强制执行,那么它可能无法可靠地工作。如果它是可选的,可能会出现类似于KB972915的情况,尽管这只是我个人纯粹的猜测,因为我不知道EF如何处理这种情况。 - Jeroen Mostert