MSSQL XML长更新查询没有锁定

时间:2014-06-05 23:49:04

标签: sql-server xml locking sql-update

我有一个大约150 000行的MSSQL服务器,每行都有大量的XML文档。我正在运行查询以更新所有这些内容,它看起来像这样:

UPDATE [dbo].[Table]
SET 
[BIGXML].modify
(' replace value of 
    (/xpath)[1]
     with     "newValue"
')

目前查询运行大约需要6个小时,不好的是,在此期间,数据库似乎对任何其他查询都没有响应。如何运行查询并保持数据库正常运行?

1 个答案:

答案 0 :(得分:1)

如果您一次更新一个记录,表是否会响应。

DECLARE @TableID INT

DECLARE X CURSOR FOR 
    SELECT Table.ID FROM Table

OPEN X
FETCH NEXT FROM X INTO @TableID
WHILE(@@FETCH_STATUS=0) BEGIN

    UPDATE [dbo].[Table]
    SET 
    [BIGXML].modify
    (' replace value of 
        (/xpath)[1]
         with     "newValue"
    ')
    WHERE
        TableID=@TableID

    FETCH NEXT FROM X INTO @TableID
END
CLOSE X
DEALLOCATE X