gpt4 book ai didi

SQL Server 2008 - 向复制表添加列失败

转载 作者:行者123 更新时间:2023-12-04 05:47:26 25 4
gpt4 key购买 nike

我们有场景:

  • SQL Server 2008
  • 我们在数据库上复制
  • 我们有一个简单的 sproc 来执行其中一个表的 ALTER(添加新列)
  • 隔离级别是默认的(READ COMMITTED)

  • 存储过程失败并出现错误:

    You can only specify the READPAST lock in the READ COMMITTED or REPEATABLE READ isolation levels



    问题:
  • 导致问题的原因是什么?
  • 如何解决?

  • 更新:
    我相信这是很常见的问题,所以我想知道为什么没有很好的解释为什么复制会导致这个问题

    最佳答案

    从提交的数据中读取时,您不能只指定 READPAST。

    原因是因为 readpast 忽略了锁定的行,所以当你使用它时,你几乎是在对 sql server 说,给我所有没有被任何其他事务触及的东西。来自 BOL 的示例:

    For example, assume table T1 contains a single integer column with the values of 1, 2, 3, 4, 5. If transaction A changes the value of 3 to 8 but has not yet committed, a SELECT * FROM T1 (READPAST) yields values 1, 2, 4, 5.



    说在读未提交隔离级别上没有多大意义,默认情况下,它会带回未提交的值。它有点要求两件相反的事情。

    关于SQL Server 2008 - 向复制表添加列失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10501322/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com