Ошибка ALTER DATABASE ADD FILE из-за запуска резервного копирования в Azure sql Managed instance - PullRequest
0 голосов
/ 16 октября 2018

Мы запускаем ежемесячный скрипт для обновления разделов.в скрипте мы также запускаем ALTER DATABASE ADD FILE и ALTER DATABASE REMOVE FILE.Сценарий должен работать около 20 минут.при запуске сценария мы получаем ошибку:

Резервное копирование, операции с файлами (например, ALTER DATABASE ADD FILE) и изменения шифрования в базе данных должны быть сериализованы.Повторите инструкцию после завершения текущей операции резервного копирования или манипулирования файлами.

Эта ошибка появляется из-за одновременного резервного копирования.резервное копирование выполняется автоматически управляемым экземпляром sql azure.

Поскольку мы не знаем время резервного копирования, нам нужно решение, чтобы можно было запустить наш скрипт без этой ошибки

1 Ответ

0 голосов
/ 29 октября 2018

Управляемый экземпляр запускает резервное копирование журнала каждые 5 минут (если только вы не запускаете сценарий, пока выполняется полное резервное копирование), и операторы изменения файлов / шифрования не допускаются в этот период.Вы могли бы реализовать некоторую логику повторных попыток или явно проверить, есть ли какие-либо текущие операции резервного копирования:

SELECT r.session_id,r.command,CONVERT(NUMERIC(6,2),r.percent_complete) 
AS [Percent Complete],CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GetDate()),20) AS [ETA Completion Time], 
CONVERT(NUMERIC(10,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed Min], 
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0) AS [ETA Min], 
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours], 
Stmt = CONVERT(VARCHAR(1000), (SELECT SUBSTRING(text,r.statement_start_offset/2, 
CASE WHEN r.statement_end_offset = -1 THEN 1000 ELSE (r.statement_end_offset-r.statement_start_offset)/2 END) 
FROM sys.dm_exec_sql_text(sql_handle))) 
FROM sys.dm_exec_requests r WHERE command LIKE '%BACKUP%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...