【问题标题】:Set Snapshot isolation is not reflecting设置快照隔离不反映
【发布时间】:2013-10-07 09:14:00
【问题描述】:

当我运行时 - SET TRANSACTION ISOLATION LEVEL SNAPSHOT - 命令成功执行但以下查询返回:

SELECT is_read_committed_snapshot_on,
       snapshot_isolation_state_desc,
       snapshot_isolation_state
FROM   sys.databases
WHERE  name = 'MyDB' 

输出:

is_read_committed_snapshot_on   0
snapshot_isolation_state_desc   OFF 
snapshot_isolation_state        0

能否请您告诉我为什么 set transction 命令没有反映? 另外,我假设ALLOW_SNAPSHOT_ISOLATION 已经“开启”,因为我的“SET TRANSACTION ISOLATION LEVEL SNAPSHOT”命令运行成功。对吗?

【问题讨论】:

    标签: sql sql-server sql-server-2008 database-administration


    【解决方案1】:

    没有为该数据库启用快照隔离。

    如果您尝试然后对该数据库运行查询,您将收到消息。

    快照隔离事务访问数据库“MyDB”失败 因为此数据库中不允许快照隔离。使用改变 DATABASE 允许快照隔离。

    要启用它,您需要运行

    ALTER DATABASE MyDB SET ALLOW_SNAPSHOT_ISOLATION ON;
    

    【讨论】:

    • 谢谢。当我运行 SET TRANSACTION ISOLATION LEVEL SNAPSHOT 时,我没有收到任何此类消息。它运行成功。这就是我感到困惑的原因。
    • @Ikrishs - 这不是错误。 SET TRANSACTION ISOLATION LEVEL SNAPSHOT; SELECT * FROM master..spt_monitor 本来可以正常工作的,因为事务不会触及数据库中被禁用的任何内容。
    • 谢谢。它仅在 select 语句之后引发以下错误。“快照隔离事务访问数据库 'xyz' 失败,因为此数据库中不允许快照隔离。使用 ALTER DATABASE 允许快照隔离。”因此 Set Transcation Snapshot 将不会检查 Allow_Snapshot_On 是否已打开。
    • @martinsmith tank , grate, + 1 for i 从过去 3 小时开始就面临这个问题。 ALTER DATABASE MyDB SET ALLOW_SNAPSHOT_ISOLATION ON;作品
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2010-11-10
    • 2014-02-20
    • 1970-01-01
    相关资源
    最近更新 更多