首页 文章

表重建时出现U-SQL错误

提问于
浏览
1

当我在一个存储过程中调用ALTER TABLE REBUILD并尝试同时在另一个存储过程中调用数据时发生错误 .

CREATE PROCEDURE IF NOT EXISTS RebuildContent()
AS  
BEGIN 

INSERT INTO dbo.Log (Date, Message)
VALUES ( DateTime.UtcNow, "Starting Content table rebuilding ..." );

ALTER TABLE dbo.Content REBUILD;

ALTER TABLE dbo.ContentCrc REBUILD;

INSERT INTO dbo.Log (Date, Message)
VALUES ( DateTime.UtcNow, "Completed Content table rebuilding ..." );

END;

enter image description here

有没有解决方案可以避免它?先感谢您!

1 回答

  • 3

    您正在重建和从同一个表读取之间遇到竞争条件 .

    重建表通过压缩插入创建的文件来创建新文件 . 不幸的是,现在,一旦重建正在删除旧文件,您将无法访问旧版本,并且您将收到错误消息 .

    我们知道这个问题,并创建了一个工作项来保留对已启动查询的旧文件的访问(提供快照语义) . 但是,我目前没有ETA .

    因此,在此之前,请安排重建和阅读作业,不要重叠 .

    注意:您仍然可以同时重建和插入或插入和读取 .

相关问题