25.4.23

Tips for DBA: Database is in transition?!

Сегодня утром на одном из серверов произошёл "казус" с пользовательской базой данных, которую мои коллеги пытались перевести в OFFLINE, но процесс пошёл не штатно, база попала в переходное состояние, став недоступной и затруднив при этом мониторинг активности других пользовательских и системных баз… Ситуация точно такая же, какая была описана Полом Ибисоном в группе новостей: OFFLINING and "Database 'xxx' is in transition. Try the statement later."

Проблема проявляется тем, что любые попытки подключиться к объектам базы ХХХ заканчиваются следующим сообщением об ошибке:

"Database 'ХХХ' is in transition. Try the statement later."

В журнале ошибок SQL Server есть сообщение типа:

Дата 26.09.2008 8:47:40
Журнал SQL Server (Текущий - 26.09.2008 8:51:00)
Источник spid131
Сообщение Setting database option OFFLINE to ON for database ХХХ.

Обращение к системным метаданным построенное в виде сценария:

select * from sys.dm_exec_requests ORDER BY command

Возвращает в числе первых процесс, в колонке command которого фигурирует инструкция ALTER DATABASE.

Рецепт, который подсказывает Пол, простой, но действенный. Посмотрите идентификатор процесса, в контексте которого исполняется инструкция ALTER DATABASE, и удалите этот процесс с помощью команды KILL.

Для того чтобы исключить возможность возникновения описываемой проблемы, Пол предлагает предварительно переводить базу данных в однопользовательский режим READONLY или в SINGLE_USER.
Например так:

ALTER DATABASE [ХХХ] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

Комментариев нет:

Отправить комментарий