Ошибка U-SQL при перестроении таблицы

Ошибка возникает, когда я вызываю 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;

введите здесь описание изображения

Есть ли решения, чтобы избежать этого? Заранее спасибо!


person Andrei Barbolin    schedule 21.08.2017    source источник


Ответы (1)


Вы столкнулись с состоянием гонки между перестроением и чтением из одной и той же таблицы.

При перестроении таблицы создается новый файл путем сжатия файлов, созданных вставкой. К сожалению, прямо сейчас, как только перестроение удалит старый файл, вы потеряете доступ к старой версии и получите сообщение об ошибке.

Нам известно об этой проблеме, и мы создали рабочий элемент, чтобы сохранить доступ к старому файлу для запущенных запросов (предоставляя семантику моментальных снимков). Однако на данный момент у меня нет ETA.

Таким образом, до тех пор, пожалуйста, планируйте свои задания по перестроению и чтению без дублирования.

Примечание. Вы по-прежнему можете одновременно перестраивать и вставлять или вставлять и читать.

person Michael Rys    schedule 21.08.2017
comment
Я понял. Спасибо за ваш ответ! - person Andrei Barbolin; 22.08.2017
comment
@MichaelRys Я удалил свой ответ. Спасибо за обновление документации :) - person Lukasz Szozda; 22.08.2017
comment
Привет @MichaelRys, можно ли узнать, исправлена ​​ли проблема с перестроением или нет? - person Andrei Barbolin; 04.04.2018
comment
Привет @AndreiBarbolin, К сожалению, мы все еще ждем, когда магазин предоставит нам возможность сохранить доступ к старой версии. К сожалению, у них есть рабочие элементы с более высоким приоритетом (в зависимости от их приоритетов). Можете ли вы проголосовать или подать запрос на странице aka.ms/adlfeedback? - person Michael Rys; 04.04.2018