база данных в процессе восстановления sql что делать
Ручной Способ исправить Состояние ожидания восстановления SQL Server
Люди, которые использовали SQL-сервер, возможно, однажды столкнулись с ошибкой SQL база данных в состояние ожидания восстановления из-за ее повторного появления. Если вы не знаете, почему происходит эта ошибка, значит, ваш раздел базы данных, вероятно, заполнен. SQL не может открыть базу данных и не может заблокировать файл базы данных, который очень похож на базу данных в автономном режиме. Это больше похоже на то, что что-то мешает запуску сервера. В этом блоге мы собираемся обсудить, как исправить состояние ожидания восстановления SQL Server с помощью наилучших возможных методов. Прежде чем продолжить, давайте узнаем, каковы причины этой ошибки.
Причины – Состояние Ожидания восстановления базы данных SQL Server
Мгновенное Решение: Используйте средство восстановления SQL SysTools, чтобы исправить состояние ожидания восстановления в базе данных SQL Server. Это программное обеспечение может быстро устранить все ошибки, связанные с базой данных SQL. После восстановления он предоставляет возможность экспортировать данные в базу данных SQL или сценарии SQL.
Ручные способы исправить Состояние ожидания восстановления SQL Server
Как всегда можно увидеть или испытать, что ручные способы довольно сложны и опасны в использовании. Поэтому, прежде чем запустить его, убедитесь, что у вас есть резервная копия базы данных. Если вы новичок в этом, то рекомендуется, чтобы вы выполняли его под руководством технического специалиста или не выполняли его.
Способ 1
В этом ручном методе для разрешения Состояние ожидания восстановления базы данных SQL Server необходимо запустить принудительное восстановление.
1. Запустите нижеуказанные SQL-запросы.
ALTER DATABASE (Database Name) SET EMERGENCY;
ALTER DATABASE (Database Name) set single_user
DBCC CHECKDB ([Database Name], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
ALTER DATABASE (Database Name) set multi_user
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, затем нажмите кнопку «Открыть», чтобы загрузить файл базы данных.
2. Выберите режим быстрого или расширенного сканирования, а затем установите флажок Автоопределение версии файла SQL Server.
3. Теперь начнется процесс сканирования. После сканирования вы можете увидеть предварительный просмотр восстановленных предметов.
4. Выберите опцию «Экспорт» сверху и выберите «Экспорт данных в базу данных SQL или сценарии SQL».
5. Заполните все необходимые данные ниже и выберите экспорт только со схемой или только со схемой и данными.
6. В конце нажмите кнопку «Экспорт», чтобы восстановить файлы базы данных SQL.
Вывод
SQL Server: база данных застряла в состоянии» восстановление»
Я создал резервную копию базы данных:
а затем попытался восстановить его:
и теперь база данных застряла в состоянии восстановления.
некоторые люди предположили, что это потому, что в резервной копии не было файла журнала, и его нужно было свернуть с помощью:
кроме того, что, конечно, не удается:
резервная копия содержит как данные, так и файл журнала:
20 ответов
вам нужно использовать WITH RECOVERY опция, с вашей базой данных RESTORE команда, чтобы привести вашу базу данных в режиме онлайн в рамках процесса восстановления.
Это, конечно, только если вы не собираетесь восстанавливать резервные копии журналов транзакций, т. е. вы хотите восстановить резервную копию базы данных, а затем иметь доступ к базе данных.
ваша команда должна выглядеть так,
вы можете иметь больше успеха с помощью мастера восстановления базы данных в SQL Server Студия Управления. Таким образом, можно выбрать определенные расположения файлов, параметр перезаписи и параметр с восстановлением. Иногда процесс восстановления застревает только из-за размера файла базы данных. смотрите здесь: https://madhivanan.wordpress.com/2016/09/06/issue-in-recovering-a-database-that-is-in-the-restoring-state-reference/
У меня была эта ситуация восстановление базы данных в экземпляр SQL Server 2005 Standard Edition с помощью Symantec Backup Exec 11d. После завершения задания восстановления база данных осталась в состоянии» восстановление». У меня не было проблем с дисковым пространством-база данных просто не вышла из состояния «восстановление».
Я запустил следующий запрос к экземпляру SQL Server и обнаружил, что база данных сразу стала полезной:
вот как вы это делаете:
У меня был аналогичный инцидент с остановкой сервера-получателя доставки журналов. После команды удалить сервер из доставки журналов и остановить доставку журналов с первичного сервера база данных на вторичном сервере застряла в восстановлении состояния после команды
сообщения базы данных:
восстановление базы данных успешно обработано 0 страниц за 18.530 секунд (0.000 MB / sec).
база данных была использована снова после тех 18 секунд.
Это было минимальное решение, которое я пытался решить эту проблему (застрявшая база данных в состоянии восстановления), и я надеюсь, что его можно применить к более случаи.
OK, у меня есть аналогичная проблема, и точно так же, как это было в случае Pauk, это было вызвано тем, что сервер исчерпал дисковое пространство при восстановлении и поэтому вызвал постоянное состояние восстановления. Как завершить это состояние без остановки служб SQL Server?
с опцией восстановления используется по умолчанию при выполнении команд RESTORE DATABASE/RESTORE LOG. Если вы застряли в процессе «восстановления», вы можете вернуть базу данных в онлайн-состояние, выполнив:
Если есть необходимость в восстановлении нескольких файлов, команды CLI требуют с NORECOVERY и с восстановлением соответственно-только последний файл в команде должен иметь с восстановлением, чтобы вернуть базу данных онлайн:
можно использовать SQL Server Мастер Management Studio также:
существует также виртуальный процесс восстановления, но вам придется использовать сторонние решения. Как правило, вы можете использовать резервную копию базы данных в онлайн базе. ApexSQL и Idera имеют свои собственные решения. Обзор по SQL Hammer о восстановлении ApexSQL. Виртуальный восстанавливая хорошее решение, если вы имеете дело с большим количеством резервных копий. Процесс восстановления намного быстрее, а также может сэкономить много места на диске. Вы можете взгляните на инфографики здесь для некоторого сравнения.
Это может быть довольно очевидно, но это меня только что споткнулось:
если клиент, который выдал RESTORE DATABASE команда отключается во время восстановления, Восстановление будет застрять.
странно, что сервер, когда ему говорят восстановить базу данных с помощью клиентского соединения, не завершит восстановление, если клиент не будет подключен все время.
У меня была ситуация, когда моя база данных показывала состояние восстановления, и я не мог запускать какие-либо запросы и не мог подключиться к нашему программному обеспечению.
Что я сделала, чтобы выйти из этой ситуации:
остановить все связанные службы SQL из windows сервисы.
Я открыл папку данных, где файлы Ldf и Mdf находятся в каталоге SQL, обычно это похоже : «C:\Program файлы***********\MSSQL\DATA
затем я скопировал файлы Ldf и Mdf базы данных: [имя БД].mdf и [имя БД]_log.ldf
Я скопировал оба файла в другую папку.
затем я запустил все службы, связанные с SQL (на шаге 1) снова из служб windows.
запустил мою MS SQL Management studio с обычным логином.
Правой Кнопкой Мыши на базе данных виновника и нажмите Удалить (чтобы удалить базу данных на всех).
все файлы LDF и MDF, связанные с этой базой данных, ушли из папки данных (упомянутой в шаге 2).
затем я скопировал оба файла (с шага 3) обратно в папку данных (Шаг 2).
У меня была эта проблема, когда я также получил ошибку TCP в журнале событий.
падение БД с sql или щелкните правой кнопкой мыши на нем в диспетчере » удалить» И восстановить снова.
Я фактически начал делать это по умолчанию. Сценарий падение БД, воссоздать, а затем восстановить.
по умолчанию every RESTORE DATABASE входит RECOVERY настройка. Параметры «NORECOVERY» в основном сообщают SQL Server, что база данных ожидает больше файлов восстановления (может быть DIFF файл и LOG файл и, может включать файл резервной копии хвостового журнала, если это возможно). Параметры «восстановление», завершить все транзакции и пусть база данных готова к выполнению транзакций.
помните, что ПОСЛЕДНИЙ ЗАПРОС ВОССТАНОВЛЕНИЯ ДОЛЖЕН ИМЕТЬ RECOVERY опции. Это может быть явный способ или нет. В термах T-SQL ситуация:
С заменой опция должна использоваться с осторожностью, так как это может привести к потере данных
или, если вы выполняете Полное и DIFF резервное копирование, вы можете использовать это
конечно, вы можете выполнить восстановление с параметром статистика = 10 это говорит SQL Server сообщать о каждом 10% завершено.
если вы предпочитаете, вы можете наблюдать процесс или восстановление в режиме реального времени на основе запроса. Как следует:
надеюсь, что это поможет.
также может возникнуть проблема с удалением застрявшей базы данных, если включен снимок. Для меня это сработало:
в моем случае этого было достаточно, чтобы удалить базу данных, который висел в состоянии «восстановление. « С помощью команды SQL
затем я щелкнул правой кнопкой мыши на базы данных и выбранными обновить который удалил запись в Management Studio. После этого я сделал новое восстановление, которое работало нормально (обратите внимание, что вывод его в автономном режиме не работал, перезапуск службы SQL не работал, перезагрузка сервера также не работала).
вы пробовали запустить только проверку? Просто чтобы убедиться, что это резервная копия.
Как исправить ошибки MS SQL и восстановить базу данных
Приглашаем разобраться в важных темах – устранения ошибок MS SQL и восстановления базы данных. Получите представление о разных способах устранения проблемы, которые следует использовать при различных обстоятельствах.
Восстановление баз данных
Специалисты пользуются несколькими способами восстановления баз данных (БД). Наиболее простой и удобный – воспользоваться программой (SSMS) SQL Server Management Studio.
Как восстановить
Узнать, где находится SQL Server Management Studio, довольно легко. Microsoft Windows Server 2012 R2 располагается в стандартном перечне программных продуктов. В Microsoft Windows Server 2008 R2 следует зайти в меню Пуск и отыскать Microsoft Windows Server 2012. Там смотреть Microsoft SQL Server Management Studio.
Далее следует ввести тип сервера с именем, а чтобы подтвердить подлинность – информацию, требуемую для прохождения авторизации. Нажать Соединить (Connect).
В левом углу из обозревателя (Object Explorer) раскрыть Базы данных (Server Objects). Из представленного перечня отобрать базу, подлежащую восстановлению либо ту, данные которой будут восстанавливаться. На выбранном файле кликнуть мышкой и в выпавшем перечне выбрать Задачи (Tasks), затем Восстановить (Restore), потом База данных… (Databases …).
Проделанные шаги дадут старт процессу Restore Database, а значит требуемая база данных начнет восстанавливаться. Следует сделать выбор источника для Restore Database.
Чтобы возобновить базу данных, при запуске мастер восстановления сделает попытку автоматом определить очередность файлов резервных копий. В том случае, когда базу данных нужно загружать из определенной папки либо устройства, понадобится:
В программе реализована возможность указания времени, необходимого для восстановления БД. Для этого необходимо просто кликнуть по кнопке Временная шкала… (Timeline). Если существует скопированный журнал транзакций или checkpoint в нем, то требуемый промежуток времени может быть указан с высокой точностью (вплоть до секунды).
Если требуется провести копирование БД, то во вкладке Файлы (Files) нужно будет прописать путь к файлам выбранной инфобазы.
Настройка дополнительных параметров
Также в программе реализована возможность настройки дополнительных параметров. Выставляя тот или иной флажок, можно регулировать необходимые действия. Следует выбрать соответствующий флажок, чтобы в процессе восстановления БД:
Настроив все важные параметры следует нажать ОК. Тем самым запустится процесс. Соответствующее уведомление сообщит об его окончании.
Восстановление базы в новое место
Чтобы перенести базу данных MSSQL Server по другому пути каталога либо сделать ее копию, следует знать, как восстановить БД в новую папку. Полезно знать как ее переименовывать. Для этого можно воспользоваться вышеупомянутой программой SSMS и T-SQL.
Подготовка к восстановлению базы данных
Перед стартом процесса восстановления нужно соблюдать ряд требований:
После того, как база данных версии SQL Server 2005 (9.x) либо более поздней, восстановится, произойдет автоматическое обновление, и она станет доступной.
Если присутствуют полнотекстовые индексы
В том случае, когда в БД SQL Server 2005 (9.x) присутствуют полнотекстовые индексы, в момент ее обновления произойдет импорт, сброс либо перестроение. Результат зависит от того, какое значение проставлено в свойствах сервера upgrade_option.
При обновлении такие индексы станут недоступны, если upgrade_option имеет значения:
Продолжительность поцессов импорта и перестроения зависит от того, какой объем занимают данные. Импорт может длиться пару часов, а процесс перестроения – гораздо дольше (может продолжаться в 10 раз дольше).
В том случае, когда выбран процесс Импорт, а доступ к полнотекстовому каталогу отсутствует, то произойдет перестроение одноименных индексов, которые связаны с ним. Для изменения свойств upgrade_option необходимо воспользоваться процедурой sp_fulltext_service.
Соблюдение правил безопасности
Чтобы обезопасить себя, крайне не рекомендуется проводить присоединение либо восстановление БД, которые были получены из ненадежных или вовсе неизвестных источников. Они могут содержать вредоносные коды, способные:
Если БД получена из источников, не внушающих доверия, то перед началом ее использования необходимо:
Инструкции RESTORE
На ход реализации этих инструкций влияет факт существования восстанавливаемой базы. Если база:
Разрешения на реализацию таких инструкций выдаются в соответствии с ролями. В соответствии с ними сервер всегда имеет доступ к данным о членстве. Разрешение RESTORE отсутствует у пользователей с ролями db_owner. Причина в том, что членство может быть проверено лишь в тех случаях, когда к базе данных всегда есть доступ и она не повреждена. А это иногда не соблюдается в процессе выполнения инструкций RESTORES.
Пошаговая инструкция восстановления БД в новую папку в SSMS
Чтобы начать процесс, в котором будет восстанавливаться БД в новую папку с возможностью переименовывать ее, можно воспользоваться инструкциями Transact-SQL.
Как просмотреть отчет
Стандартный отчет «События резервного копирования и восстановления» позволяет получить сведения о том, когда проводилось:
Данный отчет включает данные, касающиеся создания резервных копий:
Чтобы он начал формироваться, следует в Обозревателе объектов выбрать нужную БД и щелкнуть по ней мышкой. Выбрать в меню Отчеты, а затем – Стандартный отчет. После этого кликнуть на События резервного копирования и восстановления.
Чтобы просмотреть информацию из сформированного отчета следует выбрать нужную группировку и раскрыть данные по ней.
Для восстановления поврежденной БД можно воспользоваться еще одним инструментом.
Как исправить ошибки в MS SQL с помощью Recovery Toolbox for SQL Server
Для восстановления поврежденной базы данных можно обратиться к помощи Recovery Toolbox for SQL Server. Для исправления ошибки (Error), следует воспользоваться пошаговой инструкцией восстановления данных из файла *.mdf, который был поврежден. Для этого необходимо:
Данная программа создавалась, чтобы облегчить процесс восстановления поврежденных БД. Специально разработанная, оптимизированная для восстановления SQL Server, утилита поможет устранить ошибки и внести правки в разные типы повреждений *.mdf файлов и базы данных MS SQL Server.
Как становится понятно, для исправления ошибок и восстановления БД необходимо уметь пользоваться различными инструментами. Читайте, изучайте материалы по данной теме. Если возникнут вопросы – обязательно задавайте.
Выполнение полного восстановления базы данных (модель полного восстановления)
Задача полного восстановления — восстановить базу данных целиком. В период восстановления база данных находится вне сети. Прежде чем какая-либо часть базы данных перейдет в режим «в сети», все данные восстанавливаются до точки согласования, в которой все части базы данных находятся в одном и том же моменте времени и в которой нет незафиксированных транзакций.
При работе в режиме модели полного восстановления после восстановления резервных копий данных необходимо восстановить все последующие резервные копии журнала транзакций, а затем саму базу данных. Базу данных можно восстановить до определенной точки восстановления в одной из этих резервных копий журналов. Этой точкой восстановления может быть заданная дата и время, помеченная транзакция или регистрационный номер транзакции в журнале (LSN).
При восстановлении базы данных, в особенности при использовании модели полного восстановления или модели восстановления с неполным протоколированием, следует использовать одну последовательность восстановления. Последовательность восстановления состоит из одной или нескольких операций восстановления, которые выполняют перемещение данных в одном или нескольких этапах восстановления.
Ненадежные источники
Не рекомендуется подключать или восстанавливать базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок путем изменения схемы или физической структуры базы данных. Перед тем как использовать базу данных, полученную из ненадежного источника, выполните для нее инструкцию DBCC CHECKDB на тестовом сервере. Также изучите содержащийся в ней код, написанный пользователем: хранимые процедуры и другой пользовательский код.
Резервные копии из предыдущих версий
Сведения о поддержке резервных копий более ранних версий SQL Serverсм. в подразделе «Поддержка совместимости» раздела RESTORE (Transact-SQL).
Восстановление базы данных до точки сбоя
Обычно восстановление базы данных до точки сбоя включает следующие основные шаги:
Произведите резервное копирование активного журнала транзакций (также известного как заключительный фрагмент журнала). На этом шаге создается резервная копия заключительного фрагмента журнала. Если активный журнал транзакций недоступен, все транзакции этой части журнала будут потеряны.
При использовании модели восстановления с неполным протоколированием для создания резервной копии для журнала, содержащего операции с неполным протоколированием, требуется доступ ко всем файлам базы данных. Если файлы данных недоступны, резервное копирование журнала транзакций невозможно. В этом случае необходимо вручную внести все изменения, произошедшие с момента последнего резервного копирования журнала.
Восстановите самую последнюю полную резервную копию базы данных без восстановления самой базы данных (RESTORE DATABASE имя_базы_данных FROM устройство_резервного_копирования WITH NORECOVERY).
Если существуют разностные резервные копии, восстановите самую последнюю из них без восстановления базы данных (RESTORE DATABASE имя_базы_данных FROM устройство_разностного_резервного_копирования WITH NORECOVERY).
При восстановлении последней разностной резервной копии уменьшается число подлежащих восстановлению резервных копий журнала.
Начиная с первой резервной копии журнала транзакций, созданной после только что восстановленной резервной копии, последовательно восстановите журналы с параметром NORECOVERY.
Восстановите базу данных (RESTORE DATABASE имя_базы_данных WITH RECOVERY). Этот шаг можно объединить с восстановлением последней резервной копии журнала.
На следующем рисунке показана эта последовательность восстановления. После сбоя (1) создается резервная копия заключительного фрагмента журнала (2). Затем база данных восстанавливается до точки сбоя. Это включает восстановление резервной копии базы данных, последующей разностной резервной копии и всех резервных копий журналов, сохраненных после разностной резервной копии, в том числе резервной копии заключительного фрагмента журнала.
Если база данных восстанавливается на другой экземпляр сервера, см. раздел Копирование баз данных путем создания и восстановления резервных копий.
Базовый синтаксис инструкции Transact-SQL RESTORE
Базовый синтаксис инструкции RESTORETransact-SQL для последовательности восстановления в предыдущей иллюстрации выглядит следующим образом:
RESTORE DATABASE база_данных FROM full database backup WITH NORECOVERY;
RESTORE DATABASE база_данных FROM полная_разностная_резервная_копия WITH NORECOVERY;
RESTORE LOG база_данных FROM резервная_копия_журнала WITH NORECOVERY;
Повторите шаг по восстановлению журнала из резервной копии для каждой резервной копии журнала.
RESTORE DATABASE база_данных WITH RECOVERY;
Пример. Восстановление до точки сбоя (Transact-SQL)
В следующем примере Transact-SQL показаны важные параметры в последовательности восстановления для восстановления базы данных до точки сбоя. На этом шаге создается резервная копия заключительного фрагмента журнала базы данных. Далее в примере восстанавливается полная резервная копия базы данных и резервная копия журнала, а затем восстанавливается резервная копия заключительного фрагмента журнала. В этом примере показан отдельный последний шаг восстановления базы данных.
В примере используется резервная копия базы данных и резервная копия журнала, созданные в подразделе «Использование резервных копий при модели полного восстановления» раздела Полные резервные копии баз данных (SQL Server). До создания резервной копии базы данных образец базы данных AdventureWorks2012 был настроен на использование модели полного восстановления.
Восстановление базы данных на момент времени в пределах резервной копии журнала
При работе в режиме полного восстановления можно провести полное восстановление базы данных до состояния на момент времени, до помеченной транзакции или до номера LSN в резервной копии журнала. Однако в модели восстановления с неполным протоколированием, если в резервной копии журнала содержатся изменения с неполным протоколированием, восстановление до момента времени невозможно.
Образцы сценариев восстановления на определенный момент времени
В следующем примере предполагается использование критически важной системы баз данных, в которой полная резервная копия баз данных создается ежедневно в полночь, разностная резервная копия — каждый час, с понедельника до субботы. Резервные копии журнала создаются каждые 10 минут в течение дня. Чтобы восстановить базу данных до ее состояния на 05:19 среды, необходимо выполнить следующие действия.
Восстановить полную резервную копию базы данных, полученную в полночь вторника.
Восстановление разностной резервной копии базы данных, созданной в 5:00 в среду.
Применение резервной копии журнала транзакций, созданной в 5:10 в среду.
Применение резервной копии журнала транзакций, созданной в 5:20 в среду, с указанием того, что процесс восстановления относится лишь к происшедшим до 5:19 транзакциям.
В случае если нужно восстановить базу данных до ее состояния на 03:04 четверга, но разностная резервная копия базы данных, созданная в 3:00 четверга недоступна, выполните следующие действия.
Восстановить резервную копию базы данных, полученную в полночь в среду.
Восстановление разностной резервной копии базы данных, созданной в 2:00 в четверг.
Применение всех резервных копий журнала транзакций, созданных за время от 2:10 до 3:00 в четверг.
Применение резервной копии журнала транзакций, созданной в 3:10 в четверг с остановкой процесса восстановления на момент 3:04.
Связанные задачи
Восстановление полной резервной копии базы данных
Восстановление разностной резервной копии базы данных
Восстановление резервной копии журнала транзакций
Восстановление резервной копии с помощью управляющих объектов SQL Server (SMO)
Восстановление базы данных до точки в резервной копии журнала