table 重建时出现 U-SQL 错误

U-SQL error while table rebuild

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

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;

有什么办法可以避免吗? 提前致谢!

您 运行 陷入重建和读取同一个 table 之间的竞争状态。

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

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

因此,在此之前,请安排您的重建和读取作业,不要重叠。

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