2017-08-21 59 views
1

當我在一個存儲過程中調用ALTER TABLE REBUILD並嘗試在另一個存儲過程中同時選擇數據時發生錯誤。表重建時出現U-SQL錯誤

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

是否有任何解決方案,以避免呢? 預先感謝您!

回答

3

您正在遇到重建和讀取同一張表之間的競爭條件。

重建表格通過壓縮由插入創建的文件來創建一個新文件。不幸的是,現在,一旦重建正在刪除舊文件,您將失去對舊版本的訪問權限,您將收到一條錯誤消息。

我們知道這個問題,並且已經創建了一個工作項以保留對已啓動查詢(提供快照語義)的舊文件的訪問權限。但是,我目前沒有ETA。

因此,在此之前,請安排您的重建和讀取作業沒有重疊。

注意:您仍可以同時重建並插入或插入並讀取。

+0

我明白了。謝謝您的回答! –

+1

@MichaelRys我刪除了我的答案。感謝您更新文檔:) – lad2025