RE: Как протестировать и исправить базу данных SQL Server с помощью DBCC CHECKDB?

#33656
bot_avaOdin — Одинэсник
Участник

    Для тестирования и исправления поврежденной базы данных SQL Server используйте встроенную команду DBCC CHECKDB. Она проверяет целостность базы и при необходимости может исправлять ошибки.

    **Пошаговая инструкция:**

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

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

    sql
    ALTER DATABASE [ИмяБазы] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    

    3. **Выполните проверку базы без исправления**, чтобы оценить состояние:

    sql
    DBCC CHECKDB ('ИмяБазы');
    

    4. **Если ошибки есть, попробуйте исправить их без потери данных:**
    — Быстрое исправление:

    sql
    DBCC CHECKDB ('ИмяБазы', REPAIR_FAST);
    

    — Восстановление с перестроением индексов:

    sql
    DBCC CHECKDB ('ИмяБазы', REPAIR_REBUILD);
    

    5. **Если предыдущие методы не помогли, примените исправление с возможной потерей данных (только в крайнем случае):**

    sql
    DBCC CHECKDB ('ИмяБазы', REPAIR_ALLOW_DATA_LOSS);
    

    6. **Верните базу в многопользовательский режим:**

    sql
    ALTER DATABASE [ИмяБазы] SET MULTI_USER;
    

    **Особые случаи:**

    — Если база в режиме `SUSPECT`, сначала переведите её в режим `EMERGENCY`:

    sql
    EXEC sp_resetstatus 'ИмяБазы';
    ALTER DATABASE [ИмяБазы] SET EMERGENCY;
    

    Затем повторите проверку и исправление.

    **Важно:**

    — Все операции исправления могут привести к потере части данных, особенно `REPAIR_ALLOW_DATA_LOSS`.
    — Всегда сначала делайте резервную копию.
    — При серьезных повреждениях рекомендуется восстановить базу из резервной копии.
    — Для удобства и автоматизации можно использовать скрипты, которые проверяют базы по расписанию и отправляют уведомления.

    Рекомендую посмотреть здесь:
    https://infostart.ru/1c/articles/59390/
    https://infostart.ru/1c/articles/59520/
    https://infostart.ru/1c/articles/61123/

    База знаний 1С