Споделете сега:
Съдържание крия

Когато вашата SQL база данни заседне в състояние на изчакване за възстановяване, тя става недостъпна и операциите спират. Това изчерпателно ръководство предоставя 15 доказани метода за разрешаване на проблеми с изчакване за възстановяване на SQL база данни, от прости рестартирания до разширени аварийни ремонти.

1. Разбиране на състоянието на изчакване за възстановяване на SQL база данни

Преди да се опитате да поправите каквито и да е проблеми, е важно да разберете какво причинява проблеми с възстановяването на SQL база данни, за да изберете правилното решение.

1.1 Какво означава „В очакване на възстановяване“?

„В очакване на възстановяване“ показва, че SQL Server разпознава, че базата данни се нуждае от възстановяване, но не може да започне процеса на възстановяване. За разлика от „Възстановяване“, което показва, че възстановяването е в процес на активно възстановяване, „В очакване на възстановяване“ означава, че възстановяването е блокирано от препятствие.

SQL Server базата данни е в състояние на изчакване на възстановяване.

Ключовите състояния на базата данни включват:

  • ONLINE – Нормално работно състояние
  • ВЪЗСТАНОВЯВАНЕ – Процесът на възстановяване е активно протичащ
  • ВЪЗСТАНОВЯВАНЕ В ИЗЧАКВАНЕ – Възстановяването не може да започне
  • ЗАПОДОЗРЕН – Базата данни съдържа критични грешки
  • СПЕШЕН СЛУЧАЙ – Ограничен достъп само за четене за ремонти
  • ОФЛАЙН – Ръчно свалено офлайн

1.2 Често срещани причини за чакащо възстановяване на SQL база данни

Проблемите с възстановяването на SQL база данни обикновено са резултат от следните често срещани причини:

  • Липсващи или повредени файлове с регистрационни файлове на транзакции (LDF)
  • Недостатъчно дисково пространство по време на операциите по възстановяване
  • Хардуерни повреди и неочаквани системни изключвания
  • Повредени MDF файлове на базата данни
  • Проблеми с разрешенията за файлове, които пречат на достъпа
  • SQL Server проблеми с времето за стартиране на услугата
  • Грешки в конфигурацията на FILESTREAM
  • Неправилни пътища към файловете след миграции на сървъра

1.3 Как да проверите състоянието на базата данни

Проверете състоянието на базата данни, като използвате тези методи:

Използването на SQL Server Студио за управление:

  1. Свържете се с вашия SQL Server инстанция
  2. Разширете Данни папка
  3. Търсете бази данни, показващи статус „(Възстановяване в очакване)“

SQL Server базата данни е в състояние на изчакване на възстановяване.

Използване на T-SQL команда:

SELECT name, state_desc FROM sys.databases WHERE state_desc = 'RECOVERY_PENDING';

2. Първоначални диагностични стъпки

Правилната диагноза е от съществено значение, преди да се опитате да възстановите SQL база данни, ако има такива.

2.1 Проверете SQL Server Регистъри за грешки

Регистрите на грешки съдържат важна информация за това, което е причинило състоянието на изчакване на възстановяване.

  1. Отворете SQL Server Студио за управление
  2. Навигирайте до управление -> SQL Server Дневник
  3. Щракнете двукратно върху текущия лог, за да видите последните грешки
  4. Търсете съобщения за грешки, свързани с вашата база данни

Проверка SQL Server регистрационни файлове за грешки за скорошни грешки, свързани с вашата база данни.

Като алтернатива, използвайте T-SQL:

EXEC sp_readerrorlog;

2.2 Проверка на регистрационните файлове на събитията на Windows

  1. Натискане Windows Key + R
  2. Тип eventvwr.msc и натиснете Enter
    Отворете програмата за преглед на събития в Windows.
  3. Навигирайте до Windows Logs -> Система и Приложение
  4. Потърсете SQL Server свързани грешки около времето, когато е възникнал проблемът

В прегледа на събития потърсете SQL Server свързани грешки, които могат да причинят проблем с чакащото възстановяване на SQL базата данни.

2.3 Проверка на достъпността на файла

  1. Навигирайте до местоположенията на файловете на вашата база данни
  2. Проверете съществуването и на MDF, и на LDF файловете
  3. Проверете дали дисковете са онлайн и достъпни
  4. Уверете се, че мрежовите устройства са правилно монтирани

3. Поправка №1: Рестартиране SQL Server Услуги

Рестартирането SQL Server Услугите решават много от чакащите проблеми с възстановяването на SQL бази данни, причинени от проблеми с времето или временни конфликти на ресурси.

3.1 Кога рестартирането на услугата работи

Този метод е ефективен за:

  • Временни заключвания на ресурси по време на стартиране
  • Закъснения в наличността на устройства
  • Проблеми с времето на зависимостта на услугата
  • Незначителни конфликти в конфигурацията

3.2 Как да рестартирате SQL Server Услуги

Метод 1: SQL Server Конфигурационен мениджър

  1. Отворете SQL Server Конфигурационен мениджър
  2. Кликнете SQL Server Услуги
  3. Щракнете с десния бутон върху SQL Server например, като например SQL Server (MSSQLSERVER)
  4. Изберете Restart
  5. Изчакайте услугата да се рестартира напълно

Рестартирайте SQL Server услуга в SQL Server Мениджър на конфигурации.

Метод 2: Конзола за услуги

  1. Натискане Windows Key + R
  2. Тип services.msc и натиснете Enter
    Отворете конзолата за услуги на Windows.
  3. Намерете SQL Server например, като например SQL Server (MSSQLSERVER)
  4. Щракнете с десния бутон и изберете Restart

Рестартирайте SQL Server услуга в конзолата за услуги, за да решите проблема с висящото възстановяване на SQL базата данни.

Метод 3: PowerShell

Restart-Service -Name "MSSQLSERVER" -Force

3.3 Проверка след рестартиране

  1. Изчакайте 2-3 минути за пълно стартиране
  2. Проверка на състоянието на базата данни в SSMS
  3. Проверете регистрационните файлове за грешки за нови съобщения
  4. Тест на свързаността на базата данни

4. Поправка №2: Проверка и разрешаване на проблеми с дисковото пространство

Недостатъчното дисково пространство е честа причина за проблеми с възстановяването на SQL база данни. Операциите за възстановяване изискват допълнително място за временни файлове и растеж на лог файлове.

4.1 Идентифициране на проблеми с дисковото пространство

  1. Отворете File Explorer
  2. Навигиране до дискове, съдържащи файлове с база данни
  3. Проверете наличното свободно място
  4. Осигурете поне 10-20% свободно пространство за операции по възстановяване

4.2 Освобождаване на дисково пространство

  1. Изтрийте ненужните временни файлове
  2. Изчисти SQL Server резервни копия на файлове, ако пространството е критично
  3. Преместете несъществени файлове на други устройства
  4. Свийте другите файлове на базата данни, ако е възможно

Свиване на файловете на базата данни (използвайте внимателно):

DBCC SHRINKFILE (logicalfilename, target_size);

4.3 Настройка на базата данни онлайн след корекция на пространството

След като се освободи място, опитайте да прехвърлите базата данни онлайн:

ALTER DATABASE [DatabaseName] SET ONLINE;

5. Поправка №3: ​​Задаване SQL Server Обслужване до отложен старт

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

5.1 Разбиране на проблемите с времето

Проблеми с времето възникват, когато:

  • Инициализацията на SAN или мрежовото хранилище отнема време
  • Буквите на устройствата не се присвояват по време на ранното зареждане
  • Мрежовите устройства изискват удостоверяване
  • Контролерите за съхранение се нуждаят от време за инициализация

5.2 Конфигуриране на отложен старт

  1. Натискане Windows Key + R
  2. Тип services.msc и натиснете Enter
    Отворете конзолата за услуги на Windows.
  3. Намерете SQL Server например, като например SQL Server (MSSQLSERVER)
  4. Щракнете с десния бутон и изберете Имоти
  5. Промяна Startup тип да се Automatic (отложен старт)
    Промяна SQL Server типа на стартиране на Автоматично (Отложен старт), за да решите проблема с висящото възстановяване на SQL базата данни.
  6. Кликнете OK
  7. Рестартирайте системата, за да тествате

5.3 Алтернативни решения за времето

За по-голям контрол създайте планирана задача:

  1. Отворете Task Scheduler
  2. Кликнете Действие -> Създаване на основна задача
  3. Въведете Име и Описание на задачата, като например „Отлагане на старта на SQL Server обслужване"
  4. комплект Тригер да се Когато компютърът стартира
  5. комплект действие да се Стартиране на програма
  6. комплект Програма / Script до пълния път на Sqlservr.exe, ето така: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe. Можете да използвате функцията за търсене в Windows, за да го намерите.
  7. На финалната страница изберете Отворете диалоговия прозорец Свойства за тази задача, когато щракна върху Готово.
    Създаване на задача с отложен старт SQL Server в Планировчика на задачи на Windows.
  8. Кликнете завършеност.
  9. В диалоговия прозорец със свойства на задачата щракнете върху Тригерите етикет
  10. Изберете спусъка и щракнете редактирам
    Редактирайте тригера на задачата в диалоговия прозорец със свойствата на задачата.
  11. В „Разширени настройки“ отметнете Задача за отлагане за: и задайте времето на 3 минути.
    Задайте задачата на отложен старт след 3 минути, за да разрешите грешката „Възстановяване на SQL база данни в очакване“.
  12. Кликнете OK.

6. Поправка #4: Поправете разрешенията за файлове и правата за достъп

Проблеми с разрешенията предотвратяват SQL Server от достъп до файлове на базата данни, което води до състояния на изчакване за възстановяване на SQL базата данни. Правилните разрешения за файлове са от съществено значение за операциите с базата данни.

6.1 Често срещани проблеми с разрешенията

  • SQL Server Сервизният акаунт няма права за достъп до файлове
  • Антивирусен софтуер, блокиращ достъпа до файлове
  • Променени политики за сигурност
  • Проблеми с разрешенията за споделяне в мрежата

6.2 Коригиране на разрешенията за папки

  1. Навигирайте до папката с файлове на базата данни
  2. Щракнете с десния бутон върху папката и изберете Имоти
  3. Кликнете върху менюто Охрана етикет
  4. Кликнете редактирам
  5. Добавете SQL Server сервизен акаунт, ако липсва
  6. Грант Пълен контрол разрешения
  7. Кликнете OK да се приложат промените

Проверете и коригирайте разрешението на SQL Server сервизен акаунт за SQL Server папка с данни.

Използване на командния ред (icacls):

icacls "C:\Data" /grant "NT SERVICE\MSSQLSERVER":F /T

6.3 Съображения относно сервизния акаунт

Проверете SQL Server акаунт за услуги:

  1. Отворете SQL Server Конфигурационен мениджър
  2. Кликнете SQL Server Услуги
  3. Обърнете внимание на Влезте като сметка за SQL Server
  4. Уверете се, че този акаунт има правилните разрешения

Проверете SQL Server сервизен акаунт за решаване на проблема с възстановяването на SQL базата данни.

7. Поправка №5: Ръчна корекция на пътя на файла

Проблеми с пътя на файла възникват, когато файловете на базата данни се преместват или буквите на устройствата се променят. Този метод актуализира SQL Serverвътрешните файлови препратки на , без да се преместват действителните файлове.

7.1 Когато възникнат проблеми с пътя

  • Промени в хардуера на сървъра
  • Преназначаване на букви на устройства
  • Промени в мрежовия път
  • Премествания на файлове от базата данни

7.2 Коригиране на файлови пътища

  1. Идентифицирайте текущите пътища към файловете в регистрационните файлове за грешки
  2. Намерете действителните файлове на базата данни
  3. Използвайте ALTER DATABASE за актуализиране на пътища

Пътят към файла с данни за актуализиране:

ALTER DATABASE [DatabaseName] 
MODIFY FILE (NAME = 'LogicalDataFileName', FILENAME = 'C:\NewPath\DatabaseName.mdf');

Пътят към лог файла за актуализиране:

ALTER DATABASE [DatabaseName] 
MODIFY FILE (NAME = 'LogicalLogFileName', FILENAME = 'C:\NewPath\DatabaseName_Log.ldf');

7.3 Стъпки за проверка

  1. Restart SQL Server обслужване
  2. Проверка на състоянието на базата данни
  3. Проверете регистрационните файлове за грешки за съобщения, свързани с пътя
  4. Тест на свързаността на базата данни

8. Поправка №6: Превключете базата данни офлайн, а след това онлайн

Тази проста промяна на състоянието може да разреши малки проблеми с възстановяването на SQL база данни, като принуди преход към чисто състояние и изчисти временните заключвания.

8.1 Кога този метод работи

  • Незначителни несъответствия в състоянието
  • Временни заключвания на ресурси
  • Лесен процес на възстановяване и нулиране
  • Некритични условия на грешка

8.2 Процедура офлайн/онлайн

  1. Уверете се, че няма активни връзки към базата данни
  2. Изпълнете командата офлайн
  3. Изчакайте няколко секунди
  4. Изпълнете онлайн командата

Безопасен метод (изчаква връзките да се затворят):

ALTER DATABASE [DatabaseName] SET OFFLINE;
ALTER DATABASE [DatabaseName] SET ONLINE;

Незабавен метод (прекратява връзките):

ALTER DATABASE [DatabaseName] SET OFFLINE WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [DatabaseName] SET ONLINE;

8.3 Рискове и съображения

Внимание: Използването на ROLLBACK IMMEDIATE може да доведе до загуба на данни от некоммитирани транзакции. Използвайте само когато е необходимо и се уверете, че потребителите са излезли от системата.

9. Поправка №7: Деактивирайте функцията за автоматично затваряне

Функцията за автоматично затваряне може да причини проблеми с изчакване на възстановяване на SQL база данни, когато базите данни често се отварят и затварят, създавайки конфликти във времето по време на операциите по възстановяване.

9.1 Разбиране на въздействието на автоматичното затваряне

  • Базата данни се затваря след прекъсване на връзката с последния потребител
  • Трябва да се възстановява всеки път, когато базата данни се отвори
  • Създава чести цикли на възстановяване
  • Може да пречи на други операции

9.2 Деактивиране на автоматичното затваряне

Използване на T-SQL:

ALTER DATABASE [DatabaseName] SET AUTO_CLOSE OFF;

Използването на SQL Server Студио за управление:

  1. Щракнете с десния бутон върху базата данни
  2. Изберете Имоти
  3. Отиди Опции страница
  4. комплект Автоматично затваряне да се Фалшив
  5. Кликнете OK

Деактивиране на свойството за автоматично затваряне за SQL Server база данни в SQL Server Management Studio за решаване на предстоящ проблем с възстановяването на SQL база данни.

9.3 Свързани автоматични настройки

Помислете също за деактивиране на AUTO_SHRINK за ​​по-добра производителност:

ALTER DATABASE [DatabaseName] SET AUTO_SHRINK OFF;

10. Поправка №8: Изтриване на повреден лог файл и рестартиране

Този метод работи, когато файлът с журнала на транзакциите е силно повреден и не може да се поправи. Той трябва да се използва само в среди за разработка или когато загубата на данни е приемлива.

10.1 Кога е подходящо изтриването на лог файлове

⚠️ ВАЖНО ПРЕДУПРЕЖДЕНИЕ: Този метод причинява загуба на данни!

Използвайте само когато:

  • Работа с бази данни за разработка/тестиране
  • Лог файлът е напълно повреден
  • Няма други опции за възстановяване
  • Налични са скорошни резервни копия

10.2 Процедура за изтриване на лог файлове

  1. Спиране SQL Server услуга напълно
  2. Навигиране до местоположението на файла на базата данни
  3. Изтрийте .LDF файла (запазете .MDF файла)
  4. СТАРТ SQL Server обслужване
  5. SQL Server автоматично ще създаде нов лог файл

10.3 Важни предупреждения

Последици от загуба на данни:

  • Всички неизпълнени транзакции се губят завинаги
  • Веригата от лог файлове е прекъсната – диференциалните резервни копия са невалидни
  • Възстановяването в определен момент става невъзможно
  • Използвайте само в непроизводствени среди

11. Поправка №9: Отделяне и повторно прикачване на база данни

Отделяне и повторно закрепване на сили SQL Server за възстановяване на липсващи или повредени лог файлове. Този метод може да разреши проблеми с висящи процеси за възстановяване на SQL база данни, когато лог файловете са проблемни.

11.1 Кога откачането/повторното прикрепване работи

  • Липсващи лог файлове
  • Повредени заглавки на лог файлове
  • Промени в пътя на лог файла
  • Прости сценарии за корупция

11.2 Стандартна процедура за откачане/повторно закачане

  1. Първо задайте базата данни в авариен режим
  2. Преминаване към многопотребителски режим
  3. Отделяне на базата данни
  4. Прикрепете отново, като използвате само MDF файла
-- Set to emergency mode
ALTER DATABASE [DatabaseName] SET EMERGENCY;
ALTER DATABASE [DatabaseName] SET MULTI_USER;

-- Detach database
EXEC sp_detach_db '[DatabaseName]';

-- Re-attach with single file (MDF only)
EXEC sp_attach_single_file_db 
    @DBName = '[DatabaseName]', 
    @physname = N'C:\Data\DatabaseName.mdf';

11.3 Алтернативни методи за прикрепване

За сценарии с множество файлове:

CREATE DATABASE [DatabaseName] 
ON (FILENAME = 'C:\Data\DatabaseName.mdf'),
   (FILENAME = 'C:\Data\DatabaseName_2.ndf')
FOR ATTACH;

12. Поправка №10: Възстановяване на файлове с регистрационни файлове на транзакции

Възстановяването на лог файлове създава нов файл с лог файлове на транзакциите, когато оригиналният липсва или е непоправимо повреден. Този метод разрешава висящи проблеми с възстановяването на SQL база данни, но води до загуба на данни.

12.1 Кога е необходимо възстановяване на дървени трупи

  • Липсващи LDF файлове след хардуерен проблем
  • Силно повредени регистрационни файлове на транзакции
  • Промени в пътя на лог файловете, които не могат да бъдат коригирани
  • Спешни ситуации за възстановяване

12.2 Процес на възстановяване на лог файлове

⚠️ ПРЕДУПРЕЖДЕНИЕ: Това води до загуба на данни!

  1. Задаване на базата данни в авариен режим
  2. Използвайте командата REBUILD LOG
  3. Посочете новото местоположение на лог файла
  4. Прехвърлете базата данни онлайн
ALTER DATABASE [DatabaseName] SET EMERGENCY;
GO

ALTER DATABASE [DatabaseName] REBUILD LOG ON 
(NAME = 'DatabaseName_Log', FILENAME = 'C:\Logs\DatabaseName_Log.ldf');
GO

ALTER DATABASE [DatabaseName] SET ONLINE;
GO

12.3 Разбиране на последиците от загубата на данни

Причини за възстановяване на лог файлове:

  • Загуба на всички неангажирани транзакции
  • Номера на счупени лог поредици
  • Невъзможност за прилагане на последващи резервни копия на лог файлове
  • Възстановяването в определен момент става невъзможно

13. Поправка №11: Ремонт в авариен режим с DBCC CHECKDB

Поправката в авариен режим е последна мярка за възстановяване на SQL база данни, причинена от проблеми. Този метод може да поправи базите данни, но може да доведе до значителна загуба на данни.

13.1 Разбиране на аварийния режим

⚠️ ИЗКЛЮЧИТЕЛНО ПРЕДУПРЕЖДЕНИЕ: Висок риск от загуба на данни!

Използвайте авариен режим само когато:

  • Всички други методи са се провалили
  • Няма налични скорошни резервни копия
  • Възстановяването на някои данни е по-добро от пълната им загуба.
  • Базата данни е критично повредена

13.2 Процедура за авариен ремонт

  1. Първо направете резервно копие на повредени файлове от базата данни
  2. Задаване на базата данни в авариен режим
  3. Превключване към режим за един потребител
  4. Изпълнете CHECKDB с опция за поправка
  5. Връщане към многопотребителски режим
-- Step 1: Set to emergency mode
ALTER DATABASE [DatabaseName] SET EMERGENCY;
GO

-- Step 2: Single user mode
ALTER DATABASE [DatabaseName] SET SINGLE_USER;
GO

-- Step 3: Repair with no data loss
DBCC CHECKDB ([DatabaseName], REPAIR_REBUILD) WITH ALL_ERRORMSGS;
GO

-- Step 4: Return to multi-user
ALTER DATABASE [DatabaseName] SET MULTI_USER;
GO

13.3 Оценка след ремонт

  1. Прегледайте изхода на CHECKDB за действия за поправка
  2. Проверете за липсващи таблици или данни
  3. Проверете критичната функционалност на приложението
  4. Помислете за възстановяване от резервно копие, ако са загубени твърде много данни

14. Поправка #12: Проверка и коригиране на конфигурацията на FILESTREAM

Проблеми с конфигурацията на FILESTREAM могат да причинят проблеми с възстановяването на SQL база данни. Този метод адресира специфични за FILESTREAM грешки при възстановяване.

14.1 Проблеми с възстановяването, свързани с FILESTREAM

  • Грешки във връзката с драйвера на FILESTREAM
  • Несъответствия в конфигурацията между SQL Server и ОС
  • Проблеми с времето по време на стартиране на услугата
  • Проблеми с разрешенията за контейнери FILESTREAM

14.2 Отстраняване на неизправности с FILESTREAM

  1. Проверете нивото на конфигурация на FILESTREAM
  2. Проверете дали функцията на Windows е активирана
  3. Рестартирайте необходимите услуги
  4. Проверете разрешенията на контейнера FILESTREAM

Проверете конфигурацията на FILESTREAM:

SELECT SERVERPROPERTY('FilestreamEffectiveLevel') AS CurrentLevel;

Активиране на FILESTREAM на ниво екземпляр:

EXEC sp_configure 'filestream access level', 2;
RECONFIGURE;

14.3 Най-добри практики за FILESTREAM

  • Осигурете последователна конфигурация при рестартирания
  • Проверете дали пътищата на контейнера FILESTREAM са достъпни
  • Проверете дали функцията FILESTREAM на Windows е правилно активирана
  • Мониториране на съобщения за грешки, свързани с FILESTREAM

15. Поправка №13: Актуализация SQL Server Версия/Сервизни пакети

По-стари SQL Server Версиите, особено RTM изданията, съдържат известни грешки, които причиняват проблеми с възстановяването на SQL база данни. Актуализирането до най-новите сервизни пакети решава тези проблеми.

15.1 Известни проблеми в по-стари версии

  • SQL Server Грешки във възстановяването на RTM версия 2005
  • Специфични за сервизния пакет корекции за процесите на възстановяване
  • Кумулативни актуализации, адресиращи крайни случаи
  • Проблеми със съвместимостта с по-нови версии на Windows

15.2 Процес на актуализиране

  1. Проверете тока SQL Server версия
  2. Идентифицирайте най-новия наличен сервизен пакет
  3. Изтегли от Microsoft Download Center External Link
  4. Планиране на прозорец за поддръжка
  5. Инсталиране на сервизен пакет
  6. Рестартиране на услугите
  7. Проверете функционалността на базата данни

Проверете текущата версия:

SELECT @@VERSION;

15.3 Проверка след актуализация

  1. Потвърдете промяната на номера на версията
  2. Проверете дали всички бази данни са онлайн правилно
  3. Изпълнявайте основни функционални тестове
  4. Следете регистрационните файлове за грешки за нови проблеми

16. Поправка #14: Възстановяване на базата данни от резервно копие

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

16.1 Кога възстановяването на резервно копие е решението

  • Многобройните опити за ремонт са се провалили
  • Критичните производствени данни изискват сигурност
  • Съществува приемлив прозорец за загуба на данни
  • Корупцията е твърде обширна, за да бъде поправена

16.2 Пълен процес на възстановяване на базата данни

  1. Идентифицирайте най-скорошния използваем архив
  2. Осигурете достатъчно дисково пространство за възстановяване
  3. Преместете базата данни офлайн или я премахнете, ако е необходимо
  4. Възстановяване от резервен файл
  5. Приложете резервни копия на лог файлове, ако има такива

Основно възстановяване от пълен архив:

RESTORE DATABASE [DatabaseName] 
FROM DISK = 'C:\Backups\DatabaseName.bak'
WITH REPLACE;

Възстановяване с резервни копия на лог файлове за възстановяване към определен момент:

RESTORE DATABASE [DatabaseName] 
FROM DISK = 'C:\Backups\DatabaseName.bak'
WITH NORECOVERY, REPLACE;

RESTORE LOG [DatabaseName] 
FROM DISK = 'C:\Backups\DatabaseName_Log.trn'
WITH RECOVERY;

16.3 Проверка и тестване

  1. Проверете успешното свързване на базата данни с интернет
  2. Проверете целостта на данните с CHECKDB
  3. Тестване на критични функции на приложението
  4. Потвърдете, че архивирането/възстановяването е завършено без грешки

16.4 Справка

Можете да научите повече информация от нашия подробно ръководство за това как да архивирате и възстановявате SQL Server бази данни.

17. Поправка №15: Професионални инструменти за възстановяване на SQL

Когато ръчните методи не успеят да разрешат проблеми с възстановяването на SQL база данни, специализиран софтуер за възстановяване може да извлече данни от силно повредени бази данни, които не могат да бъдат поправени чрез стандартни методи.

17.1 Кога да обмислите инструменти на трети страни

  • Тежка корупция отвъд възможностите за ръчен ремонт
  • Критични данни без налични резервни копия
  • Няколко неуспешни опита за ръчен ремонт
  • Изисквания за възстановяване, критични във времето

17.2 DataNumen SQL Recovery

DataNumen SQL Recovery е мощен SQL Server инструмент за възстановяване на база данни.

По-долу са стъпките за използването му:

  1. Спрете SQL Server Service.
    Спрете SQL Server услуга в конзолата за услуги.
  2. Направете копие на файловете на базата данни в състояние на изчакване на възстановяване, включително както основния MDF файл, така и вторичните NDF файлове.
  3. Стартирайте SQL Server Service.
  4. СТАРТ DataNumen SQL Recovery.
  5. Изберете копието, вместо оригиналния файл, като източник на базата данни, която ще бъде възстановена.
  6. Кликнете върху „Стартиране на възстановяването“ и следвайте инструкциите, за да възстановите базата данни.
  7. След процеса на възстановяване ще се появи нова база данни за възстановяване. SQL Server който съдържа всички възстановени данни.

Използвайте  DataNumen SQL Recovery за поправка на един повреден SQL Server MDF файл и решаване на грешката при изчакване на възстановяване на SQL база данни.

18. Сценарии за разширено отстраняване на неизправности

Сложните среди изискват специализирани подходи за разрешаване на висящи проблеми с възстановяването на SQL бази данни.

18.1 Проблеми с множество файлове с бази данни

Базите данни с множество файлове с данни (NDF) изискват внимателно боравене:

  • Идентифицирайте кои файлови групи са засегнати
  • Проверете всички NDF файлове за достъпност
  • Обмислете опции за възстановяване, специфични за файловата група
  • Правилно обработвайте файлови групи само за четене

18.2 Групи за винаги включена наличност

Възстановяване на SQL база данни е в процес на изчакване Always On среди:

  • Първо проверете състоянието на основната реплика
  • Проверка на състоянието на синхронизация
  • Помислете за премахване и повторно добавяне на проблемна реплика
  • Преглед на конфигурацията на групата за достъпност

18.3 Клъстерни и високодостъпни сценарии

Възстановяване на SQL база данни, предстоящо в клъстер за прехвърляне на резервни части и High Availability сценарии:

  • Проверете достъпността на споделеното хранилище
  • Проверете комуникациите на клъстерните възли
  • Преглед на регистрационните файлове на клъстера за превключване на сривове
  • Осигурете правилното разрешаване на DNS

18.4 WMI и проблеми на системно ниво

Проблеми на системно ниво могат да причинят проблеми с базата данни:

  • Повреда в WMI хранилището
  • Неуспешни актуализации на Windows
  • Повреда в системния регистър
  • Проблеми със зависимостта на услугите

19. Стратегии за превенция

Предотвратяването на проблеми с възстановяването на SQL база данни е по-ефективно от отстраняването им след възникването им.

19.1 Най-добри практики за архивиране

  1. Внедряване на автоматизирани графици за пълно архивиране
  2. Конфигуриране на редовни диференциални архиви
  3. Настройвайте чести резервни копия на регистрационния файл на транзакциите
  4. Тествайте редовно процедурите за възстановяване на резервни копия
  5. Съхранявайте резервни копия на отделни системи за съхранение
  6. Проверете целостта на резервното копие с RESTORE VERIFYONLY

19.2 Мониторинг и поддръжка

  1. Настройване на известия за наблюдение на дисковото пространство
  2. Планирайте редовни DBCC CHECKDB операции
  3. Монитор SQL Server ежедневни регистри на грешки
  4. Прилагане мониторинг на базовите показатели на производителността
  5. Определен SQL Server Сигнали на агенти за критични грешки

19.3 Съображения, свързани с инфраструктурата

  • Инсталирайте UPS системи за защита на захранването
  • Използвайте хранилище от корпоративен клас с резервиране
  • Приложете правилни процедури за изключване
  • Осигурете стабилност на мрежата за споделено съхранение
  • Редовен мониторинг на състоянието на хардуера

19.4 SQL Server Най-добри практики за конфигуриране

  • Изберете подходящи модели за възстановяване
  • Конфигурирайте разумни настройки за автоматичен растеж
  • Отделете данни и лог файлове на различни дискове
  • Използвайте специални сервизни акаунти с минимални привилегии
  • Държа SQL Server актуализиран с най-новите сервизни пакети

20. Дърво на решенията и методология за отстраняване на проблеми

Следвайте този систематичен подход, когато срещнете проблеми с възстановяването на SQL база данни.

20.1 Подход към систематичната диагностика

  1. Първо проверете лог файловете за грешки – Винаги започвайте с SQL Server и лог файлове на Windows
  2. Проверете достъпността на файла – Уверете се, че всички файлове на базата данни съществуват и са четливи
  3. Проверете дисковото пространство – Потвърдете достатъчното пространство за операции по възстановяване
  4. Първо опитайте прости решения – Рестартиране на услугата, офлайн/онлайн
  5. Напредък към сложни ремонти – Само след като прости методи се провалят
  6. Помислете за възстановяване от резервно копие – Когато рисковете от ремонт са твърде високи

20.2 Избор на правилния метод за поправка

Нисък риск (първо опитайте):

  • Restart SQL Server услуги
  • Проверка и разрешаване на дисковото пространство
  • Коригиране на разрешенията за файлове
  • Офлайн/онлайн база данни

Среден риск:

  • Корекции на пътя на файла
  • Деактивиране на автоматичното затваряне
  • Корекции на конфигурацията на FILESTREAM
  • Забавено начало на услугата

Висок риск (възможна е загуба на данни):

  • Изтрийте лог файла и рестартирайте
  • Отделяне/повторно прикачване на база данни
  • Възстановяване на регистрационни файлове на транзакции
  • Ремонт в авариен режим с DBCC CHECKDB

20.3 Кога да се ескалира

Потърсете професионална помощ, когато:

  • Многобройни високорискови методи са се провалили
  • Базата данни съдържа незаменими критични данни
  • Корупцията засяга множество бази данни
  • Предполагат се проблеми на системно ниво
  • Времевите ограничения изискват гарантирани резултати

21. Често задавани въпроси

В: Каква е разликата между състоянията на базата данни „ВЪЗСТАНОВЯВА СЕ“ и „ВЪЗСТАНОВЯВА СЕ В РЕЖИМ НА ВЪЗСТАНОВЯВАНЕ“?

A: „ВЪЗСТАНОВЯВА СЕ“ означава, че базата данни активно извършва операции по възстановяване и автоматично ще се включи онлайн, когато завърши. „ОЧАКВА ВЪЗСТАНОВЯВАНЕ“ означава SQL Server Не може да започне процесът на възстановяване поради препятствие, като липсващи файлове, недостатъчно място или повреда. „Временно възстановяване“ изисква ръчна намеса за разрешаване.

В: Кое решение трябва да опитам първо, когато срещна проблеми с възстановяването на SQL база данни?

A: Винаги започвайте с най-безопасните методи. Проверете SQL Server регистрационни файлове за грешки, проверете наличността на дисково пространство, след което опитайте да рестартирате SQL Server услуги. Тези нискорискови подходи решават най-често срещаните проблеми с възстановяването без риск от загуба на данни.

В: Колко време трябва да чакам, преди да опитам друг метод за поправка?

A: За рестартиране на услуги, изчакайте 2-3 минути за пълно стартиране. За прости промени в състоянието, като например офлайн/онлайн, изчакайте 30-60 секунди. За сложни поправки, като DBCC CHECKDB, предвидете няколко часа в зависимост от размера на базата данни. Не прекъсвайте процесите на възстановяване, след като са стартирани.

В: Ще загубя ли данни при отстраняване на висящи проблеми с възстановяването на SQL база данни?

A: Загубата на данни зависи от използвания метод. Безопасните методи като рестартиране на услуги, корекции на дисково пространство и корекции на разрешения не причиняват загуба на данни. Високорисковите методи като поправка в авариен режим, възстановяване на лог файлове или изтриване на лог файлове могат да доведат до значителна загуба на данни. Винаги първо опитвайте безопасни методи.

В: Мога ли да предотвратя възникването на чакащи проблеми с възстановяването на SQL база данни?

A: Да, повечето проблеми могат да бъдат предотвратени чрез правилна поддръжка. Правете редовни резервни копия, следете дисковото пространство, поддържайте адекватен капацитет за съхранение, използвайте UPS защита, изпълнявайте рутинни DBCC CHECKDB операции и поддържайте SQL Server актуализиран с най-новите сервизни пакети.

В: Трябва ли да се опитвам да поправям производствени бази данни по време на работно време?

A: Никога не опитвайте високорискови методи за поправка на производствени бази данни по време на работно време. Планирайте прозорци за поддръжка за сложни ремонти. Въпреки това, безопасни методи като рестартиране на услуги или корекции на дисково пространство могат да бъдат изпробвани незабавно, ако блокират критични операции.

В: Кога трябва да възстановя от резервно копие, вместо да се опитвам да поправям?

A: Възстановяване от резервно копие, когато множество опити за поправка са неуспешни, когато се работи с критични производствени данни, които не рискуват по-нататъшна повреда, когато имате скорошни резервни копия с приемливи прозорци за загуба на данни или когато методите за поправка биха отнели повече време от операциите по възстановяване.

В: Как да разбера дали файловете на базата данни са повредени или просто недостъпни?

Проверка SQL Server регистрационни файлове за грешки за конкретни съобщения за грешки. Проблемите с достъпността на файловете показват „не може да се намери файл“ или грешки в разрешенията. Повредите обикновено показват грешки в контролната сума, грешки на ниво страница или нарушения на консистентността. Използвайте DBCC CHECKDB, за да проверите окончателно за повреда, когато базата данни е достъпна.

В: Кой е най-безопасният начин за копиране на файлове от базата данни, преди да се опитате да ги поправите?

A: Стоп SQL Server услугата напълно, след което копирайте MDF и LDF файловете в резервно място. Като алтернатива използвайте команди за архивиране на базата данни, ако базата данни все още е достъпна. Никога не копирайте файлове, докато SQL Server работи, тъй като това може да създаде непоследователни копия.

В: Могат ли висящите проблеми с възстановяването на SQL база данни да засегнат едновременно няколко бази данни?

A: Да, проблеми на системно ниво, като недостатъчно дисково пространство, проблеми с акаунта за услуги, повреди в хранилището или SQL Server Грешките в конфигурацията могат да засегнат множество бази данни. Винаги проверявайте дали други бази данни изпитват подобни проблеми, за да идентифицирате по-широки системни проблеми.

В: Колко често трябва да тествам процедурите си за възстановяване на базата данни?

A: Тествайте процедурите за възстановяване месечно за критични бази данни и тримесечно за важни бази данни. Включете тестване на различни сценарии за възстановяване, като възстановяване към определен момент, възстановяване на последователност от регистрационни файлове и процедури за възстановяване при извънредни ситуации. Документирайте и задайте време за всеки тест за планиране на извънредни ситуации.

В: Кога трябва да се свържа с поддръжката на Microsoft или да наема професионална помощ?

A: Потърсете професионална помощ, когато множество опити за поправка се провалят, работите с критично важни данни без резервни копия, сблъсквате се със сложна повреда в множество бази данни, срещате недокументирани съобщения за грешки или когато ограниченията във времето изискват гарантирани резултати от възстановяването.

В: Струват ли си инвестицията инструменти за възстановяване на SQL от трети страни?

A: Инструментите за възстановяване са ценни, когато ръчните методи се провалят и няма резервни копия. Повечето инструменти предлагат безплатни пробни версии за тестване на възстановимостта преди покупка. Обмислете цената спрямо професионалните услуги, стойността на данните и вероятността за успех. Инструментите работят най-добре при структурни повреди, но може да не възстановят всички типове данни.

В: Какво трябва да направя, ако „висящото възстановяване на SQL база данни“ продължава да се повтаря?

A: Повтарящите се проблеми показват основни системни проблеми. Проверете за хардуерни повреди, недостатъчни ресурси, проблеми със системата за съхранение или проблеми с конфигурацията. Следете регистрационните файлове на събитията на Windows, внедрете цялостно наблюдение и помислете за надграждане на хардуер или преминаване към по-надеждни системи за съхранение.

22. Заключение и кратка справка

Проблеми с възстановяването на SQL база данни могат да бъдат решени с помощта на тези 15 доказани метода, вариращи от прости рестартирания на услуги до сложни аварийни ремонти.

22.1 Обобщена таблица за бързи поправки

Метод за фиксиране Ниво на риска Риск от загуба на данни Най-добре се използва за
Restart SQL Server ниско None Проблеми с времето, временни заключвания
Проверете дисковото пространство ниско None Космически повреди
Отложен старт ниско None Проблеми с времето за съхранение
Поправи пълномощията ниско None Грешки с отказан достъп
Правилни пътища към файловете ниско None Промени в пътя, миграции
Офлайн / Online Среден Минимум Несъответствия в щатите
Деактивиране на автоматичното затваряне ниско None Чести цикли на отваряне/затваряне
Изтриване на лог файл Високо Да Повредени лог файлове, развойни среди
Откачете/прикрепете отново Високо Да Липсващи или повредени лог файлове
Възстановяване на лог файлове Високо Да Липсващи LDF файлове
Авариен ремонт с DBCC CHECKDB Много високо Да Тежка корупция, последна мярка
Поправка на FILESTREAM Среден None Проблеми с конфигурацията на FILESTREAM
Актуализация SQL Server Среден None Известни грешки във версията
Възстановяване от архивиране ниско Контролирана Когато методите за ремонт се провалят
Инструменти за възстановяване Среден Варира Тежка корупция, без резервни копия

22.2 Контролен списък за реагиране при извънредни ситуации

Първите 5 минути:

  1. Проверка SQL Server регистрационни файлове за грешки
  2. Проверете достъпността на файловете на базата данни
  3. Проверете наличното дисково пространство
  4. Опит за рестартиране на услугата
  5. Съобщения за грешка в документа

Следващите 15 минути:

  1. Опитайте офлайн/онлайн, ако рестартирането на услугата е неуспешно
  2. Проверете и отстранете очевидните проблеми с разрешенията
  3. Проверете дали пътищата до файловете са правилни
  4. Преглед на регистрационните файлове на събитията на Windows
  5. Оценка на наличността на резервни копия

22.3 Допълнителни ресурси

Запомнете: Превенцията чрез правилно архивиране, наблюдение и поддръжка винаги е по-добра от възстановяването. Редовното тестване на тези процедури в непроизводствени среди гарантира, че сте подготвени, когато възникнат проблеми с възстановяването на SQL база данни.


За автора

Юан Шенг е старши администратор на бази данни (DBA) с над 10 години опит в SQL Server среди и управление на корпоративни бази данни. Той е разрешил успешно стотици сценарии за възстановяване на бази данни във финансови услуги, здравеопазване и производствени организации.

Юан е специализиран в SQL Server възстановяване на бази данни, решения за висока достъпност и оптимизация на производителността. Неговият богат практически опит включва управление на многотерабайтови бази данни, внедряване на групи за достъпност Always On и разработване на автоматизирани стратегии за архивиране и възстановяване за критично важни бизнес системи.

Чрез техническата си експертиза и практичен подход, Юан се фокусира върху създаването на изчерпателни ръководства, които помагат на администраторите на бази данни и ИТ специалистите да решават сложни задачи. SQL Server предизвикателствата ефикасно. Той е в крак с най-новото SQL Server издания и развиващите се технологии за бази данни на Microsoft, като редовно тества сценарии за възстановяване, за да гарантира, че препоръките му отразяват най-добрите практики в реалния свят.

Имате въпроси относно SQL Server възстановяване или имате нужда от допълнителни насоки за отстраняване на проблеми с базата данни? Юан приветства обратна връзка и предложения за подобряване на тези технически ресурси.

Споделете сега: