在SQL Server视图中使用快照隔离级别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL Server视图中使用快照隔离级别相关的知识,希望对你有一定的参考价值。

在做了一些研究之后,我真的找不到在SQL Server视图中使用快照隔离级别的方法。

有没有办法实现它,或者如果它确实是不可能的,当我希望我的观点不阻止编写者,但仍然避免使用NOLOCK提示时,最好的方法是什么?

答案

要激活数据库上的Snapshot隔离级别,请使用以下代码:

ALTER DATABASE [your DB] SET READ_COMMITTED_SNAPSHOT ON;
ALTER DATABASE [your DB] SET ALLOW_SNAPSHOT_ISOLATION ON;

您的视图和表格将在ON时自动使用。

更多信息[https://technet.microsoft.com/en-us/library/ms175095(v=sql.105).aspx][1]

另一答案

我认为您无法强制视图始终使用快照隔离(快照隔离没有查询提示,因为它位于事务级别,而不是查询级别)。视图的调用者必须自己设置隔离:

SET TRANSACTION ISOLATION LEVEL SNAPSHOT
SELECT * FROM dbo.YourView

以上是关于在SQL Server视图中使用快照隔离级别的主要内容,如果未能解决你的问题,请参考以下文章

MSSQL 数据库 - SQL Server2019创建数据库并关联表空间启用快照隔离级别实例演示,使用MSSM工具创建数据库

使用快照隔离防止 SQL 视图被冗长的删除/插入事务阻塞

读取提交的快照隔离和事务

读取提交的快照 VS 快照隔离级别

SQL Server 事务隔离级别详解

如何将 MySQL 中的 InnoDB 设置为快照隔离级别