Sql ожидание восстановления как исправить

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

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

Причины – Состояние Ожидания восстановления базы данных SQL Server

  • Раздел базы данных переполнен или
    недостаточно памяти
  • Аппаратный сбой
  • Повреждение в лог-файлах
  • Из-за какой-либо незавершенной задачи
    или при закрытии были некоторые действия,
    ожидающие со стороны пользователя
  • Повреждение или повреждение в файлах
    MDF
  • Запуск сервера без промежутков времени

Читайте также: Восстановление поврежденного файла MDF

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

Скачать SQL восстановление Покупка Сейчас

Ручные
способы исправить Состояние ожидания
восстановления SQL Server

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

Способ 1

В этом ручном методе для разрешения
Состояние ожидания восстановления базы
данных SQL Server необходимо запустить
принудительное восстановление.

1. Запустите нижеуказанные SQL-запросы.

ALTER DATABASE (Database Name) SET EMERGENCY;

GO

ALTER DATABASE (Database Name) set single_user

GO

DBCC CHECKDB ([Database Name], REPAIR_ALLOW_DATA_LOSS) WITH
ALL_ERRORMSGS;

GO

ALTER DATABASE (Database Name) set multi_user

GO

2. База данных помечена как READ_ONLY в
аварийном режиме, отключает ведение
журнала и предоставляет доступ только
системным администраторам.

3. После того, как эти шаги будут выполнены,
повреждение файла будет исправлено, и
база данных снова будет подключена
автоматически.

Способ 2

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

1. Выполните следующие команды:

ALTER DATABASE (Database Name) SET EMERGENCY;

ALTER DATABASE (Database Name) set multi_user

EXEC sp_detach_ db ‘(Database Name)’

EXEC sp_attach_single_file_db @Database Name = ‘(Database Name)’,
@physname = N’(mdf path)’

2. Система автоматически удалять
поврежденные журналы и создаст новый.

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

Автоматизированное
решение для исправления Состояние
Ожидания восстановления SQL Server

Автоматизация гораздо лучше, чем тратить много времени и усилий на ручные методы. Для автоматического метода вы можете перейти к Восстановление базы данных SQL. Это программное обеспечение помогает восстановить поврежденный файл MDF со всеми объектами базы данных. Для выполнения процесса восстановления базы данных SQL не требуется резервное копирование. Можно легко восстановить базу данных SQL без резервного копирования. Давайте узнаем, как это работает для восстановления поврежденных файлов базы данных SQL и устранения состояние ожидания восстановления в базе данных SQL Server.

1. Установите и запустите программу восстановления SQL, затем нажмите кнопку «Открыть», чтобы загрузить файл базы данных.

Восстановление SQL

2. Выберите режим быстрого или расширенного сканирования, а затем установите флажок Автоопределение версии файла SQL Server.

3. Теперь начнется процесс сканирования. После сканирования вы можете увидеть предварительный просмотр восстановленных предметов.

Восстановление SQL

4. Выберите опцию «Экспорт» сверху и выберите «Экспорт данных в базу данных SQL или сценарии SQL».

SQL база данных в состояние ожидания восстановления

5. Заполните все необходимые данные ниже и выберите экспорт только со схемой или только со схемой и данными.

Состояние ожидания восстановления базы данных SQL Server

6. В конце нажмите кнопку «Экспорт», чтобы восстановить файлы базы данных SQL.

Состояние ожидания восстановления SQL Server

Вывод

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

Summary: This post will outline the reasons why a database (db) is marked in recovery pending state. Also, it will describe methods to fix ‘SQL server database in recovery pending state’ problem. You can resolve the problem by executing queries in SQL Server Management Studio (SSMS), or by using Stellar Repair for MS SQL software.

Free Download for Windows

Contents

  • SQL Server Database States
  • Reasons behind Recovery Pending State in SQL Server
  • Methods to Fix Recovery Pending in SQL Server Database Issue
  • Conclusion

SQL Server Database States

A SQL database is considered to be damaged if one or more of its core files are in an inconsistent state. Depending on how severe the damage is, the db is marked with different states. Some of these states are:

  • Online – If one of the data files is damaged when executing a query or some other operation, the database will remain online and accessible.
  • Suspect – If a database cannot be recovered during startup of SQL Server, the database is marked as Suspect.
  • Recovery Pending – If the SQL Server knows that database recovery needs to be run but something is preventing it from starting, the Server marks the db in ‘Recovery Pending’ state. This is different from the SUSPECT state because it cannot be said that recovery is going to fail – it just hasn’t started yet.
Recovery Pending State in SQL Server
Figure 1- Database marked in ‘Recovery Pending’ state

Let’s first understand how you can check the current state of the database.  

How to Check Database State?

 To check the current state of an SQL db, run the following query:

SELECT name, state_desc from sys.databases 
GO

Executing the query will give you an output that looks something like:

Different Database States
Figure 2- Database States

Reasons behind Recovery Pending State in SQL Server

Some of the reasons causing such an issue are:

  • The database didn’t shut down properly and there is at least one uncommitted transaction active during the shutdown, resulting in deletion of the active transaction log file.
  • User tried moving the log files to a new drive to overcome server performance issues but ended up corrupting the log files in the process.
  • Database Recovery cannot be initiated due to insufficient memory space or disk storage.

Methods to Fix Recovery Pending in SQL Server Database Issue

Note: Before initiating any of the following repair procedures, make sure to take db backup, so as to have a fail-safe copy in case anything goes wrong.

Method 1 – Manual Ways to Resolve the Database in Pending State

Following are the two manual ways that helps bring SQL database in recovery mode to normal mode:

1. Mark Database in Emergency Mode and Initiate Forceful Repair

Database EMERGENCY mode marks the database as READ_ONLY, disables logging, and grants access only to system administrators. Essentially, setting the db in this mode can bring the inaccessible database online. 

Note: Usually a database comes out of EMERGENCY mode automatically. If you are having issues restoring the db from this mode, read this Recover SQL Database from Emergency Mode to Normal Mode.

Once you have opened the db in EMERGENCY mode, try repairing the database using the DBCC CHECKDB command with the ‘REPAIR_ALLOW_DATA_LOSS’ option. To do so, open SSMS and execute the following set of queries:

ALTER DATABASE [DBName] SET EMERGENCY;
GO
ALTER DATABASE [DBName] set single_user
GO
DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
GO
ALTER DATABASE [DBName] set multi_user
GO

2. Mark Database in Emergency Mode, Detach the Main Database and Re-attach It

This solution also requires to mark db in EMERGENCY mode. Once done, take the database offline (detach) and then bring it online (re-attach). To do so, execute the following set of queries in SSMS:

ALTER DATABASE [DBName] SET EMERGENCY;
ALTER DATABASE [DBName] set multi_user
EXEC sp_detach_db ‘[DBName]’
EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = N'[mdf path]’

The above set of queries help make the server get rid of the corrupt log and build a new one automatically.

Method 2 – Use Stellar Repair for MS SQL Software

If the above methods cannot help resolve the db in recovery pending state issue, use Stellar Repair for MS SQL software. The software can help you repair corrupt database files and bring the database back online from recovery pending state quickly and smoothly.

free download

Steps to Use Stellar Repair for MS SQL Software

  • Download, install and Run Stellar Repair for MS SQL software.
  • From Select Database window, click Browse or Search to select the database file you want to repair. 
Browse Corrupt MDF file
Figure 3 – Select Database File
  • Software provides Standard Scan and Advanced Scan option to scan the corrupt database.
Scanning corrupt MDF file by Standard scan option
Figure 4 – Scan Mode
  • Click Repair to start the repair process.
  • The software shows preview of all the recoverable db components.

Preview of repaired MSSQL Database items .

Figure 5: Preview of the database objects
  • To save the repaired file and its components, click Save on File menu. 
Saving option to save repaired SQL database
Figure 6: Save option
  • From the Save Database window, do the following:
  1. Choose MDF under Save As.
  2. Select New Database or Live Database under Saving Option.
  3. Enter the required details in the Connect to Server section by Authentication or SQL Server Authentication.
Save as MDF file to New SQL Database Via connection to server by SQL Server Authentication or Windows Authentication
Figure 7: Authentication options for connectivity
  • Click Browse to choose the destination for saving the repaired file.
Save as MDF file into new database via Authentication SQL Server Authentication
Figure 8 – File Saving Options
  • Click Save.
  • When the ‘Save Complete’ message box appears, click OK.
Repaired SQL database Saved Successfully
Figure 9 – Save Complete Window

The repaired file will get saved in the selected location.

Note: For detailed information about using Stellar Repair for MS SQL software, refer to this user guide.

Key Features of Stellar Repair for MS SQL

  • Repairs corrupt and inaccessible MS SQL Database (.mdf and .ndf) files.
  • Recovers all database components like tables, keys, indexes, triggers, rules, and stored procedures, etc.
  • Recovers deleted records.
  • Supports MS SQL 2019, 2017, 2016, 2014, 2012, 2008, 2008 R2 and all lower versions.
  • The software is trusted by Microsoft MVPs.

Conclusion

This post outlined reasons behind ‘db in recovery pending state issue like database is not cleanly shut down, database files (.mdf or .ndf) turned corrupt, insufficient memory or disk space. It also described methods to fix Recovery Pending State in SQL Server Database.

You can fix the database by setting it to emergency state, and initiating the repair process or de-attaching and reattaching the db. But, such solutions have their own downsides:

  • It can only resolve minor database issues.
  • It does not ensure complete recovery of the database.
  • It involves data loss risk, particularly, running ‘REPAIR_ALLOW_DATA_LOSS’ command can delete some data.

You can overcome these limitations by using Stellar Repair for MS SQL software. The software helps SQL users and database administrators (DBAs) to fix severe database corruption errors. Also, it ensures complete recovery of db components, while preserving data integrity.

About The Author

Charanjeet

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.

Best Selling Products

Stellar Repair for MS SQL

Stellar Repair for MS SQL

Stellar Repair for MS SQL is an enterpri

Read More

Stellar Toolkit for MS SQL

Stellar Toolkit for MS SQL

3-in-1 software package, recommended by

Read More

Stellar Converter for Database

Stellar Converter for Database

Stellar Converter for Database is an eff

Read More

Stellar Repair for Access

Stellar Repair for Access

Powerful tool, widely trusted by users &

Read More

Пересказ статьи John Morehouse. How to put a SQL Server Database into Recovery Pending

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

Фраза, которая часто использовалась во время моей службы в пожарной части, была такой: «Попробуй, прежде чем совать нос». Нужно ли выбивать входную дверь? Возможно она не заперта и, сначала попробовав (своим ботинком), я могу предотвратить повреждение двери. В подобных сценариях эта философия верна. Проверка на некритичных базах данных поможет предотвратить любые дальнейшие повреждения.

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

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: НЕ ДЕЛАЙТЕ ЭТОГО НА ПРОИЗВОДСТВЕННОМ ЭКЗЕМПЛЯРЕ SQL SERVER.

Вас предупредили.

Как перевести базу данные в режим ожидания восстановления?

Вот как я это делал:

  1. Начать новую транзакцию.
  2. Создать новую таблицу.
  3. Остановить службу SQL Server.
  4. Переименовать/удалить файл журнала базы данных.
  5. Перезапустить службу SQL Server.

База данных перейдет в режим ожидания восстановления после перезапуска службы SQL Server.

Почему база данных находится в режиме ожидания восстановления?

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

Следовательно, база данных теперь находится в состоянии ожидания восстановления. Это ожидание восстановления обусловлено открытой транзакцией, но SQL Server не может перевести базу данных в согласованное состояние.

Когда это происходит, вы видите что-то подобное в журнале ошибок:

Если база данных закрыта чисто, и файл журнала транзакций удален/переименован/и т.д., SQL Server просто перестроит для вас файл журнала.

Выводы

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

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

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

Скачать Купить сейчас

Если ваша база данных находится в состоянии ожидания восстановления, это означает, что процесс восстановления базы данных завершился неудачно из-за отсутствия файлов или, возможно, из-за причин, связанных с ресурсами. Также предотвращает восстановление базы данных SQL-сервера, но база данных не повреждена. Этот тип базы данных будет недоступен для доступа пользователя. Этот тип состояния был обозначен словом ожидания восстановления между именем базы данных.

Причины, лежащие в основе состояния ожидания восстановления проблемы в базе данных SQL Server

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

1. Иногда пользовательская база данных не закрывается должным образом. В случае, если есть хотя бы одна незафиксированная транзакция в то время, когда база данных закрывается.

2. Из-за повреждения файлов MDF или файлов журнала.

3. Когда раздел базы данных заполнен или из-за нехватки места в памяти.

4. Из-за сбоя питания или сбоя оборудования.

Знать, как вывести базу данных из режима ожидания восстановления в SQL Server вручную

В этом методе пользователь должен начать принудительное восстановление базы данных. Вам просто нужно выполнить SQL-запросы.

1. Выполните следующие запросы, чтобы исправить состояние ожидания восстановления при ошибке SQL-сервера.
ALTER DATABASE (Your DBNAME) SET EMERGENCY;
ИДТИ
ALTER DATABASE (ваш DBNAME) установить single_user
ИДТИ
DBCC CHECKDB ([Your DBNAME], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
ИДТИ
ALTER DATABASE (ваш DBNAME) установить multi_user
ИДТИ

2. После выполнения вышеуказанных запросов база данных SQL-сервера помечается как READ_ONLY в аварийном режиме, отключите ведение журнала и предоставьте доступ только системному администратору.

3. Это поможет устранить повреждение и перевести базу данных в оперативный режим.

Обратные стороны этого ручного процесса для решения проблемы состояния ожидания восстановления в базе данных SQL Server

У этого ручного метода есть различные ограничения. Перед запуском ручного процесса у пользователя должны быть надлежащие резервные копии базы данных. Если вы не уверены, пользователь не должен выполнять ни один из этих методов. Потому что для выполнения этого процесса требуются сильные технические знания.

Универсальное решение для исправления состояния ожидания восстановления в базе данных SQL Server 2019/2017/2016/2014 и ниже

Использование экспертного решения — лучший способ решить эту проблему. Чтобы решить эту проблему, пользователь может попробовать PCVITA Инструмент восстановления базы данных SQL. Это профессиональное программное обеспечение корпоративного уровня, которое помогает пользователю легко восстанавливать базу данных SQL-сервера. Пользователь может легко восстановить как поврежденные, так и поврежденные данные файла MDF сервера SQL. С помощью этой утилиты пользователь может легко восстановить объекты базы данных SQL Server, такие как таблицы, представления, хранимые процедуры, функции. Это программное обеспечение имеет понятный пользовательский интерфейс, поэтому каждый может легко использовать это программное обеспечение.

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

Скачать Купить сейчас

Действия по исправлению базы данных в состоянии ожидания восстановления на сервере SQL 2019/2017/2016/2014 и ниже

  1. Установить и Запуск Программное обеспечение на вашем компьютере и нажмите Добавить файл.

2. Теперь выберите Файл MDF, Выбирать Расширенное сканирование вариант, а также выберите версию SQL Server. (Отметьте опцию восстановления удаленных объектов, если вы хотите восстановить удаленные данные)

3. Теперь программа будет Предварительный просмотр компоненты базы данных SQL Server.

4. Нажмите кнопку «Экспорт» и введите необходимые данные для экспорта базы данных SQL в SQL Server.

Заключительный вывод

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

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, чтобы проверить наличие ошибок.

Заключение

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

Generally, SQL database faces many technical issues and are trickier to manage. One such example of an error statement in SQL server is “Recovering pending state in SQL server”. The post deals with the best possible solutions on how to fix recovery pending state in SQL server database.

States of SQL Server Databases

If a single or multiple core files cannot be accessed in SQL server, it means that the SQL server database is corrupted. As per the measure of damage in the database, there are different states of SQL database. Some of them are explained below:

Online: If a single file is damaged and cannot be accessed, the database will remain available and online.

Suspect: In case, the transaction log file is damaged and it is creating obstructions on recovery or preventing transaction rollback from completion, it will result in failure of SQL database.

Recovery Pending: This state usually occurs when the SQL server knows that recovery of the database is to be done, but something is creating hindrance before starting it. This state is different from the suspect state as it cannot be declared that database recovery will fail, but it has not started yet.

The state of a database can be known after executing the following query statement:

SELECT name, state_desc from sys.databases
GO

Reasons Behind Recovery Pending State in SQL Server

Once a reason is known, finding a solution becomes a lot easier. When SQL database requires recovery and it cannot be started, it is known as pending state. This situation arises when:

  • The database is not cleanly shut down. In other words, one or more unfulfilled transaction is active at that time and the transaction log file has been deleted.
  • Users attempted to transfer the transaction log files to a new drive to solve performance issues. But, this may leads to corruption of log files.
  • Due to inadequate memory space or disk storage, database recovery cannot be started.

Workaround to Fix Recovery Pending State in SQL Server

There are 2 different manual methods to initiate SQL database recovery, which is marked in the recovery pending state. Both the solutions are described below.

Solution 1: Mark SQL Database in Emergency Mode and Start Forceful Repair

Follow these steps to resolve SQL server database issue:

  1. Execute these queries to fix SQL server database in recovery pending state:
  2. ALTER DATABASE [DBName] SET EMERGENCY;
    GO
    ALTER DATABASE [DBName] set single_user
    GO
    DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
    GO
    ALTER DATABASE [DBName] set multi_user
    GO

  3. EMERGENCY mode marks the SQL database as READ_ONLY, deactivates logging, and gives the permission to system admin only
  4. This method is capable of resolving any technical issue and bringing the database back to the accessible state. The database will automatically come out of the EMERGENCY mode.

Solution 2: Mark SQL Database in Emergency Mode, Disconnect the Main Database and Attach it Again

Execute these commands to fix recovery pending state in SQL server:

ALTER DATABASE [DBName] SET EMERGENCY;
ALTER DATABASE [DBName] set multi_user
EXEC sp_detach_db ‘[DBName]’
EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = N'[mdf path]’

These query statements will help the server to get corruption-free log and create a new one automatically.

Warning: Before performing any manual solution on the SQL server database, make sure that the proper backups of the data are created. In case, any error occurs, the data should still be available. Also, the manual approach is to be performed only when a user has a deep technical knowledge on the topic. If a user is unsure and the steps are not clear, another approach is explained in the next section.

Alternative Solution to Fix Recovery Pending State in SQL Server Database

No doubt, the manual solution to repair SQL server database is an effective technique, but it has to be performed with utmost care. Additionally, there are other disadvantages of the method too. So, it is recommended to use an automated tool like SQL Database Repair Software. According to the technical experts, it is the professional method to repair recovery pending state in SQL server 2012.

Final Words

A SQL server database is a lot more complex and difficult to handle. There are many glitches which occur in SQL database, and they have to be resolved as soon as possible. One such problem is a recovery pending state in SQL server. The multiple manual solutions have been described in the post to fix recovery pending state in SQL server database. Moreover, a third-party tool is also introduced to resolve the problem in a hassle-free manner.

Понравилась статья? Поделить с друзьями:
  • Sql код ошибки 0x534
  • Sql как изменить тип данных столбца postgresql
  • Sql как изменить значение ячейки
  • Sql как изменить значение identity
  • Sql как изменить длину строки