代码之家  ›  专栏  ›  技术社区  ›  Teoman shipahi

生产服务器上的SQL ALTER TABLE SET(LOCK_ESCALATION=TABLE)[已关闭]

  •  1
  • Teoman shipahi  · 技术社区  · 13 年前

    我需要创建一个具有外键的新表 Users 桌子

    Users表有200万条记录。

    当我在测试服务器上运行脚本时,它会锁定此表,并且测试用户无法在事务期间查询此表。

    查询开始时类似;

    BEGIN TRANSACTION
    GO
    ALTER TABLE dbo.Users SET (LOCK_ESCALATION = TABLE)
    GO
    COMMIT
    /*CREATE NEW TABLE AND FOREIGN KEYS HERE*/
    

    在不锁定的情况下,在生产中运行的安全方式是什么?

    我们是否应该将生产服务器设置为“维护模式”,并在sql事务完成后重新设置为live?

    1 回复  |  直到 13 年前
        1
  •  0
  •   Capilé    13 年前

    为了创建一个新表及其外键,甚至是新表索引,您不需要锁定或设置引用表的lock_escalation(在您的情况下是dbo.Users)。只需不运行上述事务,只需创建新表和外键。