Не вдається відновити db SQL Server з повного резервного копіювання, помилки обробки журналу, бази даних у стані "відновлення"


14

Я намагаюся створити базу даних для цілей розробки на локальному SQL Server Developer Edition 12.0.2000.8 мого ПК. У мене є повне резервне копіювання бази даних та окремі файли резервного копіювання лише журналів транзакцій, які були надіслані мені по мережі.

Коли я намагаюся відновити з повного резервного копіювання, через деякий час (~ 1 годину, можливо, база даних має розмір ~ 270 ГБ), я отримую помилку:

System.Data.SqlClient.SqlError: Під час обробки журналу "ім'я бази даних" сталася помилка. Якщо можливо, відновіть із резервної копії. Якщо резервна копія недоступна, може знадобитися відновити журнал. (Microsoft.SqlServer.SmoExtended)

Після цього db перебуває у стані «Відновлення ..».

Я хотів запустити щось на кшталт (отримав це з цього питання)

ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;

DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;

проти цього, але, природно, я не можу, оскільки база даних перебуває у стані "Відновлення ..". Перезапуск процесу відновлення на ній призводить до того ж повідомлення про помилку, випадання та відновлення знову також не допомогло.

Як мені налаштувати db і працювати? Транзакційна консистенція для мене не має значення.

Сценарій відновлення SSS, створений автоматично:

  USE [master]
  RESTORE DATABASE [database_name] FROM  DISK = N'D:\database_name.bak' WITH  FILE = 1,
  MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
  MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
  MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
  NOUNLOAD,
  STATS = 5

  GO

Результат запиту, запропонований @Craig Efrein

Журнал не може бути відновлений, тому що при закритті бази даних були відкриті транзакції / користувачі, в базі даних не відбулося жодної контрольної точки, або база даних була лише для читання. Ця помилка може статися, якщо файл журналу транзакцій було видалено або загублено вручну через помилку обладнання або середовища.


Коментарі не для розширеного обговорення; ця розмова була переміщена до чату .
Пол Білий 9

Відповіді:


2

З коментарів, перенесених до чату, ця записка від ОП:

Я просто спробував приєднати його через GUI. Коли я вибрав .mdf-файл, SSMS визначив, що база даних складається з 3-х файлів (даних, індексу, журналу), але якимось чином, хоча я відновлював "З MOVE", деталі бази даних про шлях до файлу говорили про помилку! Тому я лише вказав на старий файл журналу / даних / індексу і ... База даних в Інтернеті.


-3

Перехід до режиму одиночного користувача та відновлення.

приклад:
Перше відновлення використовує параметр NORECOVERY, щоб можна було виконати додаткові відновлення. Друга команда відновлює журнал транзакцій, а потім передає базу даних в Інтернеті для використання кінцевим користувачем.

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.BAK'
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.TRN'
WITH RECOVERY
GO

1
Питання посилається на один оператор RESTORE DATABASE, окремого відновлення журналу транзакцій не проводиться. Ймовірно, що вихідна база даних та / або файл резервного копіювання пошкоджені.
Брайан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.