【问题标题】:Using Snapshot Isolation level in a SQL Server View在 SQL Server 视图中使用快照隔离级别
【发布时间】:2015-07-06 15:59:17
【问题描述】:

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

有什么方法可以实现它,或者如果确实不可能,当我希望我的观点不阻止作者,但仍然避免对他们使用 NOLOCK 提示时,处理这种情况的最佳方法是什么?

【问题讨论】:

    标签: sql-server view snapshot-isolation


    【解决方案1】:

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

    SET TRANSACTION ISOLATION LEVEL SNAPSHOT
    SELECT * FROM dbo.YourView
    

    【讨论】:

      【解决方案2】:

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

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

      您的视图和表格将在开启时自动使用它。

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

      【讨论】:

      • 感谢您的回答!我应该更清楚:我不是在谈论读取提交的快照,而只是关于快照隔离,它应该在语句/过程级别上明确设置。我了解设置已提交读会影响到数据库的所有查询
      猜你喜欢
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 2016-09-02
      • 2014-02-20
      相关资源
      最近更新 更多