因为改变READ_COMMITTED_SNAPSHOT要求数据库不能有其他连接,
这样,在有事务订阅的数据库执行下面语句改变语句时候,会进入无限等待状态,
ALTER  DATABASE   MemberData
SET READ_COMMITTED_SNAPSHOT ON;有没有能暂时删除复制事务对数据库的连接的方法?试过了,把同步停止了也没用。
不想把发布和订阅删除了重建,好不容易才搞定的。

解决方案 »

  1.   


    为 READ_COMMITTED_SNAPSHOT 启用数据库后,在已提交读隔离级别下运行的所有查询将使用行版本控制,这意味着读取操作不会阻止更新操作
    ALTER DATABASE AdventureWorks
        SET ALLOW_SNAPSHOT_ISOLATION ON;
     在快照隔离下运行的事务可以访问数据库中为快照启用的表。若要访问没有为快照启用的表,则必须更改隔离级别。例如,下面的代码示例显示了在快照事务下运行时联接两个表的 SELECT 语句。一个表属于未启用快照隔离的数据库。当 SELECT 语句在快照隔离下运行时,该语句无法成功执行。
     
    SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
    BEGIN TRAN
        SELECT t1.col5, t2.col5
            FROM Table1 as t1
            INNER JOIN SecondDB.dbo.Table2 as t2
                ON t1.col1 = t2.col2;
     下面的代码示例显示了已修改为从事务隔离级别更改为已提交读隔离级别的相同 SELECT 语句。由于此更改,SELECT 语句将成功执行。
    SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
    BEGIN TRAN
        SELECT t1.col5, t2.col5
            FROM Table1 as t1
            WITH (READCOMMITTED)
            INNER JOIN SecondDB.dbo.Table2 as t2
                ON t1.col1 = t2.col2;
     
      

  2.   


    ALTER  DATABASE   MemberData
    SET READ_COMMITTED_SNAPSHOT ON
    WITH ROLLBACK IMMEDIATE