Инструкция восстановления не обработана база данных должна находиться в однопользовательском режиме

После нескольких лет работы с SQL сервером от Майкрософт оказались перед очередной проблемой, после не плановой перезагрузки сервера база SQL оказалась со статусом «подозрительна». Так как раньше с таким не сталкивался пришлось искать информацию в интернете. Не буду описывать как все происходило, скопипастью статью по которой лечили SQL.

Ситуация – после аварийной перезагрузки ноутбука , который не проснулся из hibernate, перестал загружаться Sharepoint. (Я поставил в запись тег sharepoint, но запись больше про sql server).

Как это выглядит – не работает ни одно веб приложение, говорит.
Ферма недоступна.

Центр администрирования выдает

“Не удалось подключиться к базе данных конфигурации.”
Начинаем исследовать.

ОТкрываем SQL Configuration Manager, видимо что SQL сервер почему то не стартовал.

Стартуем, делаем IISReset и..
Толку нет.
Идем дальше – открываем SQl Management Studio , подключаемся к SQL Server.
На первый взгляд все почти в порядке. Рухнула база WebAnalitics, но я этой службой на DEV машине все равно пока не пользовался.
В чем же дело?

Попробуем открыть базу данных sharepoint_config_чего то там. И видим что не все так хорошо.

Что же делать?

Бекапов на разработческой машине я не делал, а переставлять sharepoint долго и неприятно.

Попробуем починить базу.

У нас есть замечательная команда DBCC CHECKDB, вот ей и восользуемся.
DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’);

Результат

Msg 926, Level 14, State 3, Line 1
Не удалось открыть базу данных «SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad». Она была отмечена как подозрительная (SUSPECT) операцией восстановления. Дополнительные сведения см. в журнале ошибок SQL Server.

Поиском в интернете нашел правильную ссылку
ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET EMERGENCY

сработало!

DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’);
кажется тоже заработало.
теперь начинаем чинить
DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’,REPAIR_REBUILD);

результат

Msg 7919, Level 16, State 3, Line 1
Инструкция восстановления не обработана. База данных должна находиться в однопользовательском режиме.

хм, значит надо ввести базу в однопользовательский режим.
ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET SINGLE_USER

а теперь еще раз
DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’,REPAIR_REBUILD);

Msg 7901, Level 16, State 1, Line 1
Инструкция восстановления не была обработана. Данный уровень восстановления не поддерживается, если база данных находится в аварийном режиме.

хм, значит надо другую опцию.
DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’,REPAIR_ALLOW_DATA_LOSS );

заработало! РЕзультаты постить не буду, так как был выдан огромный лог ошибок.

запустим еще раз
DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’);
ошибок не обнаружено.

Остался последний штрих – вернуть базу в нормальный режим.

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET MULTI_USER

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET ONLINE

итого

Правильный скрипт который “лечит” базу таков.

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET ONLINE

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET EMERGENCY

DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’);

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET SINGLE_USER

DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’,REPAIR_ALLOW_DATA_LOSS );

DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’);

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET MULTI_USER

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET ONLINE

после чего IISreset и sharepoint поднялся.

Источник http://www.gotdotnet.ru/blogs/mbakirov/8642/

Я
   wap_gordon_free_man

08.10.12 — 00:14

Доброй ночи, случилось страшное и база стала «Подозрительная» (SUSPECT). Почитав статьи в интернете о данной проблеме, нужно ее проверить на ошибки DBCC CHECKDB . Стоит SQL Server Standard 2008R2. Запускаю DBCC CHECKDB  (0, REPAIR_ALLOW_DATA_LOSS) Ошибка: Сообщение 7919, уровень 16, состояние 3, строка 1

Инструкция восстановления не обработана. База данных должна находиться в однопользовательском режиме.

В интернете нашел как перевезти базу в однопользовательский режим

Use master

go

sp_dboption dbname, single, true

Ошибка: Не удалось открыть базу данных «PM_Bux». Она была отмечена как подозрительная (SUSPECT)

   France

1 — 08.10.12 — 00:28

приходилось восстанавливать после такой бяки..

но трудозатраты нереальные…

но, если уж вдруг все будет оооочень плохо — милости прошу в почту..

   wap_gordon_free_man

2 — 08.10.12 — 00:44

France, спасибо. Порылся в инете и нашел:

ALTER DATABASE <Имя БД> SET EMERGENCY

ALTER DATABASE <Имя БД> SET SINGLE_USER

DBCC CHECKDB (<Имя БД>, REPAIR_ALLOW_DATA_LOSS)

ALTER DATABASE <Имя БД> SET MULTI_USER

База вылечилась, завтра покажу буху, пусть глянет что и как.

из этих 4 строчек, я 1 не знаю что делает ?

  

France

3 — 08.10.12 — 00:58

ну, если вспомнимть западные фильмы, то эмерженси — это скорая помощь))

Ошибка? Это не ошибка, это системная функция.

  • Remove From My Forums
  • Question

  • I keep getting this error while trying to run the following query:

    «DBCC CHECKDB (6, repair_allow_data_loss

    I followed the instruction in the online document to start the SQL server in single-usre mode by command line:

    sqlservr.exe -m.

    Could anyone offer some hint?

    Thanks,

    hz

Answers

  • If it is just a user database, you the following command to forces all connections to close and then set the database in single user mode.

    ALTER DATABASE NameHere SET SINGLE_USER WITH ROLLBACK IMMEDIATE

    HTH, Jens Suessmeyer.

    http://www.sqlserver2005.de

В этом блоге будет описано, как восстановить базу данных из аварийного режима на сервере SQL и что это вызывает, а также что происходит, когда SQL переходит в это состояние. Кроме того, будут обсуждены шаги по восстановлению базы данных из аварийного режима. Найдите решение и начните писать свой блог.

База данных важна для любого пользователя, поскольку в ней хранятся все ключевые данные организации. Он особенно подвержен множеству проблем, потому что сохраняет огромные объемы данных. База данных SQL Server может стать недоступной и помеченной как подозрительная в различных ситуациях. И независимо от того, находится ли база данных в аварийном режиме, пользователю не разрешается обращаться к ней или выполнять какие-либо действия с ней, пока она не вернется в оперативный режим.

Как восстановить базу данных из аварийного режима на SQL-сервере — это вопрос. Не нужно тревожиться; есть еще шанс, что он может выздороветь. Если у вас возникли проблемы с базой данных SQL и вы хотите ее восстановить, вы можете загрузить программу и выполнить действия по восстановлению.

Пользователи SQL могут обойти проблему, создав базу данных в аварийном режиме. Однако это единственный ручной подход для правильного восстановления базы данных. В результате пользователю предлагается перейти в аварийный режим для решения проблемы. В этом блоге рассмотрены многие сценарии использования базы данных SQL Server в чрезвычайных ситуациях, чтобы помочь людям лучше понять эту тему.

  1. Поврежденная база данных: Когда база данных SQL Server находится в аварийном состоянии, наиболее типичной причиной является повреждение базы данных SQL.
  2. Повреждение файла журнала базы данных: Любая проблема с файлом журнала транзакций, например отсутствующие или поврежденные файлы журнала, переводит базу данных в подозрительный статус.
  3. Выключение сервера: Пользователям может потребоваться вывести свои базы данных из аварийного режима, если SQL Server неожиданно завершит работу.
  4. Атака вирусов или вредоносного ПО: Локальная рабочая станция может заразиться вирусом или вредоносным ПО, что переведет базу данных SQL Server в подозрительный статус.
  5. Ненадежный источник питания: В некоторых случаях источник питания ненадежен, из-за чего ваша база данных становится недоступной.
  6. Проблемы с оборудованием: Если есть какие-либо проблемы с оборудованием, они могут быть причиной этой проблемы с базой данных SQL.

Что делать, если ваша база данных SQL подозревается?

Пользователи могут просматривать свои резервные копии данных, если они у них есть. В противном случае единственный способ получить доступ к данным — активировать аварийный режим базы данных. Этот метод совместим с вашей базой данных, если вы используете SQL Server 2005 или более новые версии.

Восстановление базы данных из аварийного режима в SQL Server: ручной метод

Эти шаги необходимо выполнить, чтобы восстановить базу данных SQL из аварийного режима.

1. Подтвердите предполагаемый статус базы данных SQL.

Первое, что нужно сделать в этом случае, — это исследовать предполагаемое состояние базы данных. Пользователи могут проверить это, выполнив команду ниже, чтобы получить данные из базы данных. Если база данных определена как сомнительная, команда вернет сообщение об ошибке.
ВЫБРАТЬ * ИЗ имя_базы_данных..имя_таблицы

2. Включите аварийный режим SQL Server.

Если вы уверены, что база данных SQL находится в подозрительном режиме, просто выполните команду ниже, чтобы включить аварийный режим базы данных:
ALTER DATABASE имя_базы_данных УСТАНОВИТЬ АВАРИЙНЫЙ

3. База данных SQL должна быть восстановлена

Пользователи должны приступить к восстановлению базы данных SQL Server после активации аварийного режима. Этот ремонт поможет устранить все несоответствия, вызывающие подозрительный режим. Для этого база данных должна быть переведена в однопользовательский режим. Пользователи должны знать, что в процессе восстановления может произойти потеря данных.
ALTER DATABASE database_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ИДТИ
DBCC CHECKDB (имя_базы_данных, REPAIR_ALLOW_DATA_LOSS)
ИДТИ

4. Верните базу данных в многопользовательский режим.

Разрешите многопользовательский доступ к базе данных после завершения ремонта с помощью этой команды:
ALTER DATABASE имя_базы_данных SET MULTI_USER WITH ROLLBACK IMMEDIATE

5. База данных теперь доступна в Интернете.

Наконец, запустите эту команду, чтобы выйти из аварийного режима и восстановить доступ к базе данных.
ALTER DATABASE имя_базы_данных SET ONLINE

Автоматизированный инструмент для восстановления базы данных из аварийного режима в SQL Server

Если принять надлежащие меры предосторожности, это не так сложно, как кажется в вышеупомянутой технике. Вы можете быстро восстановить свою базу данных с помощью Средство восстановления DataHelp SQL. В следующем сегменте мы рассмотрим, как это сделать:

1. Для восстановления запустите программное обеспечение и откройте Файл MDF.

2. После этого выберите Режим сканирования; мы будем использовать Предварительное сканирование. Выберите Файл SQL MDF версия и нажмите ОК.

3. К предварительный просмотр в объекты или Предметы которые были извлечены, просто щелкнуть на них.

4. Выбирать База данных SQL Server в раскрывающемся меню Экспорт в / как, затем щелкните Экспорт.

Заключение

Когда база данных SQL Server находится в подозрительном режиме, активируется аварийный режим. Чтобы прочитать данные из недоступной базы данных, мы устанавливаем статус базы данных на АВАРИЙНЫЙ. Вы можете исправить информацию, используя команду DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS.

Другой вариант — восстановить данные из предыдущей резервной копии. Если ваш файл резервной копии также поврежден, вы можете использовать команду DBCC для его восстановления. Если ни одна из этих команд не работает, вы можете перевести базу данных в оперативный режим с помощью DataHelp SQL Recovery Tool.

SQL Server Database Stuck in Restoring StateДанный материал является переводом оригинальной статьи «MSSQLTips : Daniel Calbimonte : SQL Server Database Stuck in Restoring State».

Вы обнаружили, что база данных Microsoft SQL Server находится в состоянии восстановления. Как это произошло и как получить обратно доступ к этой базе данных SQL Server?

SQL Server Database Stuck in Restoring State

В этой статье мы покажем причины, по которым база данных MS SQL Server находится в состоянии восстановления, и как получить доступ к базе данных в состоянии восстановления. Это не очень распространенная проблема, но когда так случается, для администратора баз данных это головная боль. В этой статье мы рассмотрим различные причины и возможные решения этой проблемы. Рассмотренные здесь рекомендации пригодны для любой версии SQL Server.

База данных SQL Server в состоянии RESTORING после восстановления

Обычно состояние восстановления возникает, когда вы восстанавливаете базу данных. Здесь мы рассмотрим пример этого.

Создадим файл полной резервной копии (файл *.bak) и файл резервной копии журнала транзакций (файл *.bak), запустив вот такой код T-SQL в SQL Server Management Studio (SSMS):

BACKUP DATABASE [earnings] TO DISK = N'c:sqlearnings.bak' 
WITH NOFORMAT, NOINIT, NAME = N'earnings-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO   BACKUP LOG [earnings] TO DISK = N'C:sqlearnings_LogBackup_2018-06-02_12-42-07.bak' 
WITH NOFORMAT, NOINIT, NAME = N'earnings_LogBackup_2018-06-02_12-42-07', SKIP, NOREWIND, NOUNLOAD, STATS = 10

Как только у нас будут созданы резервные копии, начнем процесс восстановления.

Чтобы восстановить полную резервную копию с резервной копией журнала, нам нужно использовать параметр NORECOVERY в процессе восстановления. Итак, если мы сперва восстановим полную резервную копию следующим образом:

RESTORE DATABASE [earnings] 
FROM DISK = N'c:sqlearnings.bak' WITH NORECOVERY, NOUNLOAD, STATS = 10

База данных теперь будет в состоянии восстановления. Если мы забудем восстановить дополнительные резервные копии, база данных застрянет в этом режиме.

SQL Server Database Stuck in Restoring State

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

RESTORE LOG [earnings]
FROM DISK = N'c:sqlearnings_LogBackup_2018-06-02_12-42-07.bak'

База данных SQL Server в состоянии RESTORING после выполнения резервного копирования журнала с помощью NORECOVERY

Другая причина, по которой ваша база данных может находиться в состоянии восстановления, — это резервное копирование хвоста журнала (Log Tail) с помощью параметра NORECOVERY, как показано ниже.

BACKUP DATABASE [earnings] TO DISK = N'c:sqlearnings.bak' 
WITH NOFORMAT, NOINIT,  NAME = N'earnings-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO   
BACKUP LOG [earnings] TO DISK = N'C:sqlearnings_LogBackup_2018-06-02_12-42-07.bak' 
WITH NOFORMAT, NOINIT, NAME = N'earnings_LogBackup_2018-06-02_12-42-07', SKIP, NOREWIND, NOUNLOAD, NORECOVERY, STATS = 10

Это приведет к переходу базы данных в состояние восстановления.

Чтобы исправить это, вы можете восстановить резервные копии базы данных, как показано выше.

Как сделать базу данных SQL Server доступной в состоянии RESTORING без восстановления резервных копий

Если база данных застряла в состоянии восстановления и у вас нет дополнительных резервных копий для восстановления, вы можете восстановить базу данных с помощью следующей команды:

RESTORE DATABASE [earnings] WITH RECOVERY

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

Дополнительные сведения о восстановлении базы данных в состоянии восстановления можно найти в статье «Recovering a SQL Server database that is in the restoring state».

База данных SQL Server в состоянии RESTORING и Database Mirroring

Другая причина, по которой ваша база данных находится в состоянии восстановления, заключается в том, что она является частью зеркального отображения базы данных SQL Server (Database Mirroring). Database Mirroring — это решение, позволяющее обеспечить высокую доступность базы данных. Если в первичной базе данных произошел сбой, база данных вторичной реплики на другом сервере возьмет на себя операции с базой данных. Основная база данных — это основной сервер, вторичная — это зеркальный сервер и, при желании вы можете иметь еще один зеркальный сервер.

Вот пример. Слева мы видим, что на основном сервере доступна база данных. Справа мы видим зеркало базы, которое находится в состоянии восстановления.

DB Restoring State and Database Mirroring

Дополнительные сведения о зеркальном отображении базы данных можно найти в статье «Configure SQL Server Database Mirroring Using SSMS».

В зеркальном отображении базы данных зеркальный сервер находится в состоянии восстановления до тех пор, пока не будет выполнено переключение на другой ресурс (FailOver). Чтобы получить доступ к базе данных, которая находится в состоянии восстановления, когда она является частью ошибки базы данных, вы можете выполнить ручное или автоматическое переключение при отказе, от участника к зеркалу.

Чтобы выполнить автоматическое переключение при отказе, выполните действия описанные в статье: «SQL Docs : Role Switching During a Database Mirroring Session — Manual Failover».

Чтобы «сломать» зеркало, вам нужно будет выбрать базу данных, перейти на страницу зеркального отображения и нажать кнопку удаления зеркального отображения. В следующей статье показано, как это сделать: «SQL Docs : Remove Database Mirroring (SQL Server)». После удаления база данных зеркального отображения вернется в нормальное состояние, и вы сможете создать резервную копию и восстановить базу данных как обычную базу данных.

База данных SQL Server в состоянии RESTORING и Log Shipping

Режим Доставки журналов SQL Server (Log Shipping) позволяет постоянно создавать резервные копии журналов транзакций, а также отправлять и восстанавливать резервные копии на другом сервере, чтобы иметь реплики базы данных в случае отказа основного сервера.

Доставка журналов переводит базу данных в состояние ожидания с восстановлением, либо без восстановления. В режиме «без восстановления» база данных доставки журналов будет находиться в состоянии восстановления, как показано ниже.

DB Restoring State and Log Shipping

Ссылка на статью об изменении состояния, чтобы избежать состояния восстановления: «Change the restore mode of a secondary SQL Server database in Log shipping with SSMS».

База данных SQL Server застряла в состоянии RESTORING после перезапуска компьютера

Иногда база данных находится в состоянии восстановления после перезапуска компьютера или по какой-либо другой причине. Обычно это происходит с большими базами данных, когда выполняется длинная транзакция и происходит неожиданное завершение работы или перезапуск сервера.

DB Restoring State after reboot

Если у вас возникла эта проблема, попробуйте сначала команду:

RESTORE DATABASE [databasename] WITH RECOVERY

Если вы получаете сообщение об ошибке, что база данных используется, сперва попробуйте установить однопользовательский режим:

USE master;
GO   
ALTER DATABASE Database_name
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;

Затем попробуйте снова выполнить восстановление с помощью предыдущей команды восстановления.

После восстановления вы можете перейти в многопользовательский режим с помощью следующей команды T-SQL:

USE master;
GO   
ALTER DATABASE Database_name
SET MULTI_USER;
GO

Кроме того, убедитесь, что вы используете последний пакет обновления или накопительное обновление SQL Server.

Так же, вам следует просмотреть журнал ошибок и средство просмотра событий Windows, чтобы проверить наличие ошибок.

Заключение

В этой статье мы рассмотрели разные причины, по которым база данных может находиться в состоянии восстановления. Надеемся, это будет полезно, если  вам придется устранять эту проблему.

1C
1С v8
Востановление базы sql подозрительная (SUSPECT)
0

wap_

gordon_free_man

08.10.12

00:14

Доброй ночи, случилось страшное и база стала «Подозрительная» (SUSPECT). Почитав статьи в интернете о данной проблеме, нужно ее проверить на ошибки DBCC CHECKDB . Стоит SQL Server Standard 2008R2. Запускаю DBCC CHECKDB  (0, REPAIR_ALLOW_DATA_LOSS) Ошибка: Сообщение 7919, уровень 16, состояние 3, строка 1

Инструкция восстановления не обработана. База данных должна находиться в однопользовательском режиме.

В интернете нашел как перевезти базу в однопользовательский режим

Use master

go

sp_dboption dbname, single, true

Ошибка: Не удалось открыть базу данных «PM_Bux». Она была отмечена как подозрительная (SUSPECT)

1

France

08.10.12

00:28

приходилось восстанавливать после такой бяки..

но трудозатраты нереальные…

но, если уж вдруг все будет оооочень плохо — милости прошу в почту..

2

wap_

gordon_free_man

08.10.12

00:44

France, спасибо. Порылся в инете и нашел:

ALTER DATABASE <Имя БД> SET EMERGENCY

ALTER DATABASE <Имя БД> SET SINGLE_USER

DBCC CHECKDB (<Имя БД>, REPAIR_ALLOW_DATA_LOSS)

ALTER DATABASE <Имя БД> SET MULTI_USER

База вылечилась, завтра покажу буху, пусть глянет что и как.

из этих 4 строчек, я 1 не знаю что делает ?

3

France

08.10.12

00:58

ну, если вспомнимть западные фильмы, то эмерженси — это скорая помощь))

Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший

После нескольких лет работы с SQL сервером от Майкрософт оказались перед очередной проблемой, после не плановой перезагрузки сервера база SQL оказалась со статусом «подозрительна». Так как раньше с таким не сталкивался пришлось искать информацию в интернете. Не буду описывать как все происходило, скопипастью статью по которой лечили SQL.

Ситуация – после аварийной перезагрузки ноутбука , который не проснулся из hibernate, перестал загружаться Sharepoint. (Я поставил в запись тег sharepoint, но запись больше про sql server).

Как это выглядит – не работает ни одно веб приложение, говорит.
Ферма недоступна.

Центр администрирования выдает

“Не удалось подключиться к базе данных конфигурации.”
Начинаем исследовать.

ОТкрываем SQL Configuration Manager, видимо что SQL сервер почему то не стартовал.

Стартуем, делаем IISReset и..
Толку нет.
Идем дальше – открываем SQl Management Studio , подключаемся к SQL Server.
На первый взгляд все почти в порядке. Рухнула база WebAnalitics, но я этой службой на DEV машине все равно пока не пользовался.
В чем же дело?

Попробуем открыть базу данных sharepoint_config_чего то там. И видим что не все так хорошо.

Что же делать?

Бекапов на разработческой машине я не делал, а переставлять sharepoint долго и неприятно.

Попробуем починить базу.

У нас есть замечательная команда DBCC CHECKDB, вот ей и восользуемся.
DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’);

Результат

Msg 926, Level 14, State 3, Line 1
Не удалось открыть базу данных «SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad». Она была отмечена как подозрительная (SUSPECT) операцией восстановления. Дополнительные сведения см. в журнале ошибок SQL Server.

Поиском в интернете нашел правильную ссылку
ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET EMERGENCY

сработало!

DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’);
кажется тоже заработало.
теперь начинаем чинить
DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’,REPAIR_REBUILD);

результат

Msg 7919, Level 16, State 3, Line 1
Инструкция восстановления не обработана. База данных должна находиться в однопользовательском режиме.

хм, значит надо ввести базу в однопользовательский режим.
ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET SINGLE_USER

а теперь еще раз
DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’,REPAIR_REBUILD);

Msg 7901, Level 16, State 1, Line 1
Инструкция восстановления не была обработана. Данный уровень восстановления не поддерживается, если база данных находится в аварийном режиме.

хм, значит надо другую опцию.
DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’,REPAIR_ALLOW_DATA_LOSS );

заработало! РЕзультаты постить не буду, так как был выдан огромный лог ошибок.

запустим еще раз
DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’);
ошибок не обнаружено.

Остался последний штрих – вернуть базу в нормальный режим.

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET MULTI_USER

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET ONLINE

итого

Правильный скрипт который “лечит” базу таков.

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET ONLINE

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET EMERGENCY

DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’);

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET SINGLE_USER

DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’,REPAIR_ALLOW_DATA_LOSS );

DBCC CHECKDB (‘SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad’);

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET MULTI_USER

ALTER DATABASE [SharePoint_Config_349c423b-6e3d-48a1-9251-dca12042d8ad] SET ONLINE

после чего IISreset и sharepoint поднялся.

Источник http://www.gotdotnet.ru/blogs/mbakirov/8642/

  • Remove From My Forums
  • Question

  • I keep getting this error while trying to run the following query:

    «DBCC CHECKDB (6, repair_allow_data_loss

    I followed the instruction in the online document to start the SQL server in single-usre mode by command line:

    sqlservr.exe -m.

    Could anyone offer some hint?

    Thanks,

    hz

Answers

  • If it is just a user database, you the following command to forces all connections to close and then set the database in single user mode.

    ALTER DATABASE NameHere SET SINGLE_USER WITH ROLLBACK IMMEDIATE

    HTH, Jens Suessmeyer.

    http://www.sqlserver2005.de

SQL Server Database Stuck in Restoring StateДанный материал является переводом оригинальной статьи «MSSQLTips : Daniel Calbimonte : SQL Server Database Stuck in Restoring State».

Вы обнаружили, что база данных Microsoft SQL Server находится в состоянии восстановления. Как это произошло и как получить обратно доступ к этой базе данных SQL Server?

SQL Server Database Stuck in Restoring State

В этой статье мы покажем причины, по которым база данных MS SQL Server находится в состоянии восстановления, и как получить доступ к базе данных в состоянии восстановления. Это не очень распространенная проблема, но когда так случается, для администратора баз данных это головная боль. В этой статье мы рассмотрим различные причины и возможные решения этой проблемы. Рассмотренные здесь рекомендации пригодны для любой версии SQL Server.

База данных SQL Server в состоянии RESTORING после восстановления

Обычно состояние восстановления возникает, когда вы восстанавливаете базу данных. Здесь мы рассмотрим пример этого.

Создадим файл полной резервной копии (файл *.bak) и файл резервной копии журнала транзакций (файл *.bak), запустив вот такой код T-SQL в SQL Server Management Studio (SSMS):

BACKUP DATABASE [earnings] TO DISK = N'c:\sql\earnings.bak' 
WITH NOFORMAT, NOINIT, NAME = N'earnings-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO   BACKUP LOG [earnings] TO DISK = N'C:\sql\earnings_LogBackup_2018-06-02_12-42-07.bak' 
WITH NOFORMAT, NOINIT, NAME = N'earnings_LogBackup_2018-06-02_12-42-07', SKIP, NOREWIND, NOUNLOAD, STATS = 10

Как только у нас будут созданы резервные копии, начнем процесс восстановления.

Чтобы восстановить полную резервную копию с резервной копией журнала, нам нужно использовать параметр NORECOVERY в процессе восстановления. Итак, если мы сперва восстановим полную резервную копию следующим образом:

RESTORE DATABASE [earnings] 
FROM DISK = N'c:\sql\earnings.bak' WITH NORECOVERY, NOUNLOAD, STATS = 10

База данных теперь будет в состоянии восстановления. Если мы забудем восстановить дополнительные резервные копии, база данных застрянет в этом режиме.

SQL Server Database Stuck in Restoring State

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

RESTORE LOG [earnings]
FROM DISK = N'c:\sql\earnings_LogBackup_2018-06-02_12-42-07.bak'

База данных SQL Server в состоянии RESTORING после выполнения резервного копирования журнала с помощью NORECOVERY

Другая причина, по которой ваша база данных может находиться в состоянии восстановления, — это резервное копирование хвоста журнала (Log Tail) с помощью параметра NORECOVERY, как показано ниже.

BACKUP DATABASE [earnings] TO DISK = N'c:\sql\earnings.bak' 
WITH NOFORMAT, NOINIT,  NAME = N'earnings-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO   
BACKUP LOG [earnings] TO DISK = N'C:\sql\earnings_LogBackup_2018-06-02_12-42-07.bak' 
WITH NOFORMAT, NOINIT, NAME = N'earnings_LogBackup_2018-06-02_12-42-07', SKIP, NOREWIND, NOUNLOAD, NORECOVERY, STATS = 10

Это приведет к переходу базы данных в состояние восстановления.

Чтобы исправить это, вы можете восстановить резервные копии базы данных, как показано выше.

Как сделать базу данных SQL Server доступной в состоянии RESTORING без восстановления резервных копий

Если база данных застряла в состоянии восстановления и у вас нет дополнительных резервных копий для восстановления, вы можете восстановить базу данных с помощью следующей команды:

RESTORE DATABASE [earnings] WITH RECOVERY

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

Дополнительные сведения о восстановлении базы данных в состоянии восстановления можно найти в статье «Recovering a SQL Server database that is in the restoring state».

База данных SQL Server в состоянии RESTORING и Database Mirroring

Другая причина, по которой ваша база данных находится в состоянии восстановления, заключается в том, что она является частью зеркального отображения базы данных SQL Server (Database Mirroring). Database Mirroring — это решение, позволяющее обеспечить высокую доступность базы данных. Если в первичной базе данных произошел сбой, база данных вторичной реплики на другом сервере возьмет на себя операции с базой данных. Основная база данных — это основной сервер, вторичная — это зеркальный сервер и, при желании вы можете иметь еще один зеркальный сервер.

Вот пример. Слева мы видим, что на основном сервере доступна база данных. Справа мы видим зеркало базы, которое находится в состоянии восстановления.

DB Restoring State and Database Mirroring

Дополнительные сведения о зеркальном отображении базы данных можно найти в статье «Configure SQL Server Database Mirroring Using SSMS».

В зеркальном отображении базы данных зеркальный сервер находится в состоянии восстановления до тех пор, пока не будет выполнено переключение на другой ресурс (FailOver). Чтобы получить доступ к базе данных, которая находится в состоянии восстановления, когда она является частью ошибки базы данных, вы можете выполнить ручное или автоматическое переключение при отказе, от участника к зеркалу.

Чтобы выполнить автоматическое переключение при отказе, выполните действия описанные в статье: «SQL Docs : Role Switching During a Database Mirroring Session — Manual Failover».

Чтобы «сломать» зеркало, вам нужно будет выбрать базу данных, перейти на страницу зеркального отображения и нажать кнопку удаления зеркального отображения. В следующей статье показано, как это сделать: «SQL Docs : Remove Database Mirroring (SQL Server)». После удаления база данных зеркального отображения вернется в нормальное состояние, и вы сможете создать резервную копию и восстановить базу данных как обычную базу данных.

База данных SQL Server в состоянии RESTORING и Log Shipping

Режим Доставки журналов SQL Server (Log Shipping) позволяет постоянно создавать резервные копии журналов транзакций, а также отправлять и восстанавливать резервные копии на другом сервере, чтобы иметь реплики базы данных в случае отказа основного сервера.

Доставка журналов переводит базу данных в состояние ожидания с восстановлением, либо без восстановления. В режиме «без восстановления» база данных доставки журналов будет находиться в состоянии восстановления, как показано ниже.

DB Restoring State and Log Shipping

Ссылка на статью об изменении состояния, чтобы избежать состояния восстановления: «Change the restore mode of a secondary SQL Server database in Log shipping with SSMS».

База данных SQL Server застряла в состоянии RESTORING после перезапуска компьютера

Иногда база данных находится в состоянии восстановления после перезапуска компьютера или по какой-либо другой причине. Обычно это происходит с большими базами данных, когда выполняется длинная транзакция и происходит неожиданное завершение работы или перезапуск сервера.

DB Restoring State after reboot

Если у вас возникла эта проблема, попробуйте сначала команду:

RESTORE DATABASE [databasename] WITH RECOVERY

Если вы получаете сообщение об ошибке, что база данных используется, сперва попробуйте установить однопользовательский режим:

USE master;
GO   
ALTER DATABASE Database_name
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;

Затем попробуйте снова выполнить восстановление с помощью предыдущей команды восстановления.

После восстановления вы можете перейти в многопользовательский режим с помощью следующей команды T-SQL:

USE master;
GO   
ALTER DATABASE Database_name
SET MULTI_USER;
GO

Кроме того, убедитесь, что вы используете последний пакет обновления или накопительное обновление SQL Server.

Так же, вам следует просмотреть журнал ошибок и средство просмотра событий Windows, чтобы проверить наличие ошибок.

Заключение

В этой статье мы рассмотрели разные причины, по которым база данных может находиться в состоянии восстановления. Надеемся, это будет полезно, если  вам придется устранять эту проблему.

Понравилась статья? Поделить с друзьями:
  • Инструкция вэрс пк 4 для персонала
  • Инструкция воспитателя по предупреждению детского дорожного травматизма в доу
  • Инструкция волшебная доска для рисования люминесценция
  • Инструкция вэнд 01 малыш инструкция по применению
  • Инструкция гарнитуры jabra talk 25