Восстанавливаем базу данных SQL Server из режима “suspect”
В случае выхода базы данных из строя, может быть повреждена важная информация, потеря которой обернется катастрофическими последствиями как для пользователя, так и для бизнеса.
Автор: Waqas, журналист в сфере информационной безопасности
В случае выхода базы данных из строя может быть потеряна важная информация. Последствия потери данных могут быть катастрофическими как для пользователя, так и для бизнеса. Если крупные организации понесут огромные убытки, малые предприятия могут поплатиться своим существованием.
По словам разработчиков, ошибка присутствует в каждой программе. Даже самое лучшее программное обеспечение может иногда давать сбой.
Иногда работа и жизнь людей зависят от функциональности программного обеспечения. Корректная работа ПО влияет на финансовое благополучие или здоровье людей. Поэтому особенно важно, чтобы при сбоях программного обеспечения, имелась возможность быстро его вернуть в нормальное рабочее состояние.
Программы работают с базами данных. В случае выхода базы данных из строя, может быть повреждена важная информация, потеря которой обернется катастрофическими последствиями как для пользователя, так и для бизнеса. Большинство баз данных работают на сервере Microsoft SQL. В случае проблем с сервером для восстановления базы потребуется много времени и сил.
Существует несколько способов восстановить базу данных после инцидента. Во-первых, следует разобраться с таблицей подозрительных(suspect) страниц. Информация в таблице подозрительных страниц доступна любому пользователю, имеющему доступ к базе данных MSDB. Обновлять базу также может любой пользователь, имеющий разрешение на обновление. Владельцы базы, исправив роль базы данных в MSDB, или сисадмин, исправив роль сервера, могут вставлять, обновлять и удалять записи.
Способы восстановления базы данных из подозрительного режима:
Сброс статуса базы данных + DBCC CHECKDB
Используйте программное обеспечение Recovery Toolbox for SQL Server
Таблица подозрительных страниц содержит информацию о потенциально поврежденных страницах и используется при принятии решения о восстановлении страниц. Подозрительная страница из таблицы находится в базе данных MSDB.
Страница считается «подозрительной», если при попытке ее чтения ядром СУБД SQL Server обнаруживается одна из следующих ошибок.
Ошибка 823: возникает во время проверки циклической контрольной суммы (CRC), запущенной операционной системой, например, ошибка диска (возникает при некоторых аппаратных ошибках)
Ошибка 824: например, разрыв страницы (или любая другая логическая ошибка)
Идентификатор каждой «подозрительной» страницы записывается в таблицу подозрительных страниц. В данную таблицу компонент Database Engine записывает все подозрительные страницы, с которыми сталкивается во время обработки, в частности:
Когда при обработке запроса необходимо прочитать страницу.
При выполнении DBCC CHECKDB.
Во время операции резервного копирования.
Во время операции восстановления, исправления DBCC или удаления базы данных таблица подозрительных страниц также обновляется по мере необходимости.
Ниже приведены несколько способов восстановления базы данных, если она перешла в режим “suspected”.
Во время своей работы я однажды столкнулся с ситуацией, когда рабочая база данных в конце дня перешла в режим “suspected”. Причем в последний раз база была заархивирована много часов назад. К сожалению, вернуться в штатный режим не получилось. DBCC checkdb также отказался запускаться.
Я очень расстроился, пока не нашел решение. Рассмотрим первый способ восстановления базы данных.
Сначала необходимо перевести базу данных в АВАРИЙНЫЙ режим, выполнив следующие действия:
- EXEC sp_resetstatus ‘yourDBname’;
- ALTER DATABASE yourDBname SET EMERGENCY
Затем требуется протестировать базу данных:
- DBCC checkdb (‘yourDBname’)
- ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
- DBCC CheckDB (‘yourDBname’, REPAIR_ALLOW_DATA_LOSS)
- ALTER DATABASE yourDBname SET MULTI_USER
Если не получилось восстановить базу первым способом
У вас имеется поврежденная база данных сервера (MS SQL 2005) и она неисправна. Такую базу невозможно восстановить путем тестирования-исправления (возникает ошибка контрольной суммы). В таком случае база данных не выгружается в файл – выдается та же ошибка. Вы попробовали несколько раз, и это не помогло. Попробуйте восстановить базу данных, протестировав сам SQL.
Команды для тестирования SQL приведены ниже:
- DBCC CHECKDB (‘database’, REPAIR_FAST)
- DBCC CHECKDB (‘database’, REPAIR_REBUILD)
Если обе команды не работают, можно использовать третью. Рекомендуем использовать данную команду только в крайнем случае в связи с опасностью возможной потери данных.
DBCC CHECKDB (‘database’, REPAIR_ALLOW_DATA_LOSS)
Если команда не выполняется из-за не однопользовательского режима, используйте команду:
Alter database db-name set SINGLE_USER
! Перед тестированием обязательно сделайте бэкап!
Используйте программу Recovery Toolbox for SQL Server — важный инструмент в работе любого системного администратора. Программа позволяет работать с файлами MS SQL Server любой версии.
Программа позволяет комплексно восстанавливать файлы базы данных. Особенности программы Recovery Toolbox for SQL Server приведены ниже:
1. Данные из нечитаемых баз данных можно восстановить в приостановленном состоянии (suspended state);
2. Программа работает со всеми версиями Microsoft SQL Server;
3. Программа позволяет восстановить самое важное и ценное в базе данных;
4. В базе данных несколько элементов — тоже не проблема;
5. Восстановливает таблицы при работе с MDF файлами;
6. SQL MDF Recovery экспортирует данные непосредственно в Microsoft SQL Server;
7. Информация сохраняется в том числе в виде скриптов;
8. Извлеченные данные напрямую экспортируются в новую базу данных;
9. Программа работает с любой версией Windows;
10. Мультиязычный интерфейс;
11. Возможен просмотр данных перед восстановлением;
Сбой базы данных после сбоя сервера является самым страшным сном любого сисадмина. Как в такой ситуации восстановить поврежденную базу?
Для восстановления данных после сбоя обычно используется резервная копия. Однако, если по какой-то причине копия не была сделана, попробуйте использовать Recovery Toolbox for SQL Server. Скорее всего, вам удастся восстановить рабочее состояние базы данных.
Для этого необходимо выполнить следующие действия:
1. Установите Recovery Toolbox for SQL Server на свой компьютер. Нет необходимости использовать полную версию, достаточно демонстрационной версии;
2. Выберите файл;
3. После выполнения действий начнется анализ базы данных;
4. Изучите список всех восстановленных таблиц;
5. Просматривайте данные в таблицах;
6. Изучайте восстановленные объекты;
7. Настройте параметры сохранения;
8. Выберите необходимые данные;
9. Сохраните их (для этого потребуется полная версия)
Восстановление базы данных
Как видим, для быстрого исправления MDF файла потребовалось нажать всего несколько кнопок. Все восстановленные данные копируются в новую базу данных или в виде скриптов на диск. Таким образом, программа никак не влияет на поврежденные файлы.
Как это работает?
1. Выбираем поврежденную базу данных.
2. Смотрим, какие данные можно восстановить.
3. Определяемся с вариантом экспорта.
4. Выбираем данные для восстановления.
5. Просматриваем отчет после сохранения.
Программа условно-бесплатная, стоит 99 долларов. Скачать программу можно здесь.
How to Repair the SQL Database in Suspect Mode [Solved]
![]()
Most of the users of the Microsoft SQL Server get an error when connecting to an SQL Server. This may happen due to some of the several reasons such as missing or corrupt transactional log files of the SQL Server database, faulty hardware, virus attack, abrupt shutdown of the SQL server, etc. View the SQL Server error log to know the specific cause behind SQL Server database suspect mode.
When SQL Database goes in suspect mode, you cannot access the DB and cannot perform any transactions until it is back online. To resolve this problem, follow these steps:
Step 1: Turn on the Emergency Mode of the database. Now, do these:
- Load the Microsoft SQL Server Management Studio and connect your database
- Select the option “New Query”.
Here, you have to turn off the suspect flag on the database and switch it to EMERGENCY. For that, you have to write as:
EXEC sp_resetstatus ‘db_name’;
ALTER DATABASE db_name SET EMERGENCY
Step 2: Execute the function Consistency Check on the Master Database as:
Step 3: Change the database to Single User Mode, and then roll back the previous transactions as:
ALTER DATABASE database_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE
Step 4: Backup the database as the next operation might cause data loss.
Step 5: Run the Database Repair allowing some data loss as:
DBCC CHECKDB (‘database_name’, REPAIR_ALLOW_DATA_LOSS)
A lert: You will lose all information after the above step, so do ensure to take a database backup before this step.
Step 6: Open the database into Multi-User Mode.
ALTER DATABASE database_name SET MULTI_USER
Step 7: Freshen up the SQL database server and check the connectivity of the database.
Conclusion
Here in these steps, you can resolve Database in Suspect Mode error with the implementation of 7 manual methods with great ease. Somehow if these steps don’t work for you, then we recommend the professional approach. Try the Cigati SQL Recovery tool to repair SQL Server Database Suspect. With it, you get an instant and 100 percent SQL database back to normal.
How to Recover MS SQL Database from Suspect Mode?
![]()
Summary: Read this post to find solutions to recover MS SQL database marked as suspect. It describes step-wise instructions to fix the ‘SQL server suspect database’ issue by running Transact-SQL (T-SQL) commands in SQL Server Management Studio (SSMS). Also, it provides an alternative solution to restore the database using a SQL Recovery tool.
When SQL database goes into suspect mode, it becomes inaccessible. In such a situation, you will neither be able to connect to the database nor recover it during server startup.

Figure 1: Database in Suspect Mode
Check out the Infographic below for quick solutions to recover database from suspect mode in SQL Server 2008, and higher versions.
When does SQL database goes to suspect mode?
When SQL server suspects the primary filegroup of the database to be damaged or if the database file is missing, the database status is set to ‘Suspect’.
Also, there are a wide range of errors that could result in SQL database in suspect mode. Some of them are listed as below:
- System fails to open the device where the data or log file of SQL server resides.
- SQL server crashes or restarts in the middle of a transaction, resulting in a corrupt or inaccessible transactions log file.
- SQL Server tries to open a database, and the file belonging to that database is already open by anti-virus software installed on your system.
- The database is terminated abnormally.
- Lack of disk space.
- SQL cannot complete a rollback or roll forward operation.
- Database files are being held by the operating system, third-party backup software, etc.
How to get SQL database out of suspect mode?
NOTE: You can try restoring the database in suspect mode from a good known backup. If the backup is not available, proceed with the following steps.
Follow the steps in sequence given below to recover MS SQL database from suspect mode:
Step 1: Open SSMS and connect to the database.

Figure 2: Connect to Database
Step 2: Select the New Query option.

Figure 3: Select New Query
Step 3: In the Query editor window, enter the following code to turn off the suspect flag on the database and set it to EMERGENCY:

Figure 4: Set Database in Emergency Mode
NOTE: If you cannot set the database in emergency mode, skip to the next solution.
Step 4: A suspect database might not be corrupted. You can determine if the database is corrupted or not by running the following DBCC CHECKDB command.
This statement will report any consistency errors (if found) in the database and will recommend running the minimum level of repair option to fix corruption.
Before initiating the repair process, you must first set the database into ‘Single User Mode.’ Doing so will prevent other users from making any changes to the database during the repair process.

Figure 5: Check Database Consistency
Step 5: Now, let’s bring the database into the Single User mode and roll back the previous transactions by executing the below command:

Figure 6: Set Database to Single_User Mode
Step 6: Take a complete backup of the corrupted files to avoid chances of data loss.
Step 7: After putting the db in SINGLE USER mode, try to fix the consistency errors using the REPAIR_REBUILD option of DBCC CHECKDB. This option can quickly repair missing rows in nonclustered indexes. In addition, you can use it for more time-consuming repair operation, such as rebuilding an index.
DBCC CHECKDB (‘database_name’, REPAIR_REBUILD)
However, if REPAIR_ALLOW_DATA_LOSS is suggested as minimum level of repair, then run DBCC CHECKDB with the suggested repair option. The syntax is as follows:

Figure 7: Repair Database with DBCC CHECKDB
Step 8: Bring the database into the Multi-User mode:

Figure 8: Set Database to Multi-User Mode
Step 9: Refresh the database server.
After completing these steps, you should be able to connect to the database. In case of any data loss, you’ll have the db backup to restore from (Step 6).
What if this solution doesn’t work?
If your server database file has turned severely corrupt, the above-mentioned steps may fail to revive the database. At this point, try restoring the database by using Stellar Repair for MS SQL.

The software can fix common SQL database corruption errors that occur due to reasons such as the database in suspect mode and several others. The software uses advanced algorithms to repair and restore SQL db from suspect mode to normal state (online).
How to Recover SQL Database from Suspect Mode with the Stellar SQL Recovery Tool?
NOTE: Make sure to close the server instance before running Stellar Repair for MS SQL software.
Step 1: Download, install, and run Stellar Repair for MS SQL software.
Step 2: From the Select Database window, choose Browse or Search to select the SQL database file (.mdf) of the suspect database.

Figure 9: Select Database File
Step 3: Once the file is selected, hit Repair.

Figure 10- Repair Selected File
NOTE: Make sure to uncheck the ‘Include Deleted Records’ checkbox if you don’t want the deleted records to be recovered.
Step 4: Preview the repaired MDF file for recoverable SQL server database objects.

Figure 11: Preview window
Step 5: Click Save on File menu to save the repaired file.

Figure 12: File menu
Step 6: From Save Database window, perform the following:
- Select MDF under Save As.
- Save the repaired file in New database or Live database.
- Fill in the details under Connect To Server.
Step 7: Click Save.
Open SSMS and attach the db (containing the repaired MDF file). You will be able to access the database.
Additional features of the software
- Repairs corrupt MDF and NDF files.
- Recovers tables, triggers, keys, indexes, stored procedures, defaults, rules, schema, etc.
- Supports MS SQL 2019, 2017, 2016, 2014, 2012, 2008 R2, and lower versions.
- Provides multiple saving options to save the repaired database including MS SQL (MDF), CSV, HTML, and XLS.
The software is trusted by Microsoft MVPs
Conclusion
This post discussed methods on ‘How to recover MS SQL database from suspect mode’. The best approach is to restore the database from a healthy backup. If you don’t have backup, use the EMERGENCY mode to access the database and repair it. However, you may fail to rollback the transactions that were active when database went into suspect mode. Also, using the REPAIR_ALLOW_DATA_LOSS option as the minimum repair level can lead to data loss. A better alternative is to use a specialized SQL database repair software that helps repair and restore the database from suspect to a normal state.
About The Author
Charanjeet is a Technical Content Writer at Stellar®who specializes in writing about databases, e-mail recovery, and e-mail migration solutions. She loves researching and developing content that helps database administrators, organizations and novices to fix multiple problems related to MS SQL and MySQL databases and Microsoft Exchange.
33 comments
hi . i am facing this issue at my DR site . PR is showing the DB is in Synchronized but DR is showing initializing/suspect . please guide me how to do it?
i have this issue at my DR site . i restored the DB at DR and when i add that DB in high availability group it should that command executed successfully but then at DR status of that DB changed to initializing/suspect. can any one help me in this? i am quite new at SQL server
i have this issue at my DR site . i restored the DB at DR and when i add that DB in high availability group it should that command executed successfully but then at DR status of that DB changed to initializing/suspend. can any one help me in this? i am quite new at SQL server
Hi. My SQL Express database was in the Suspect mode. I followed the 9 ‘Steps to Fix the SQL Server Database Suspect Mode Error’ and my problem is fixed.
Исправление поврежденной базы SQL (Suspect Mode)
Что делать, если база данных под MS SQL ушла в Suspect Mode?
В своей работе столкнулся с ситуацией, когда рабочая база данных в конце дня ушла в режим "Suspect Mode". Перевести ее нормальный режим, пока не произведена починка базы, не получалось. DBCC checkdb тоже отказывалась запускаться, т.к. база в этом режиме. Замкнутый круг? Славо богу нашлась приведенная в этом посте статейка.
Для начала необходимо перевести базу данных в режим EMERGENCY:
EXEC sp_resetstatus 'yourDBname';
ALTER DATABASE yourDBname SET EMERGENCY
Потом выполнять тестирование базы:
DBCC checkdb('yourDBname')
ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ('yourDBname', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE yourDBname SET MULTI_USER