Поделиться через


Диагностика ошибок 3313, 3314, 3414 и 3456 (SQL Server)

При возникновении ошибки во время операции повтора, отмены или восстановления в базе данных SQL Server база данных переводится в состояние SUSPECT. К таким ошибкам относятся следующие: 3313 (ошибка повторения журнала), 3314 (ошибка отмены журнала), 3414 (ошибка восстановления, препятствующая перезапуску базы данных) и ошибка 3456 (ошибка повтора в протоколируемой транзакции).

Пояснение

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

ПримечаниеПримечание

Если эта ошибка возникает в базе данных tempdb, экземпляр SQL Server завершает работу.

Действие пользователя

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

ПримечаниеПримечание

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

Для выяснения причины ошибки 3313, 3314, 3414 или 3456 проверьте журнал событий Windows, в котором должна содержаться предшествующая ошибка, которая указывает на конкретный сбой. Конкретное действие пользователя зависит от того, указывает ли журнал событий Windows, что ошибка SQL Server была вызвана временным условием или постоянной неполадкой.

В случае временного сбоя выполните следующие действия.

  1. Попытайтесь перевести базу данных в режим «в сети», выполнив следующую инструкцию ALTER DATABASETransact-SQL:

    ALTER DATABASE <database name> SET ONLINE;
    
  2. Чтобы определить, завершилось ли восстановление успешно и перешла ли база данных в режим «в сети», просмотрите журнал ошибок SQL Server и представление каталога sys.databases.

  3. Если база данных работает в режиме «в сети», выполните инструкцию DBCC CHECKDB на языке Transact-SQL, чтобы проверить согласованность базы данных.

В случае постоянного сбоя выполните следующие действия.

В журнале ошибок SQL Server просмотрите сообщения, связанные с устраняемой ошибкой (3313, 3314, 3414 или 3356), и просмотрите сообщения, предшествовавшие этой ошибке, чтобы определить, можно ли устранить эти ошибки вручную. Если можно устранить предшествовавшие ошибки, выполните одну из следующих процедур.

  • Восстановите и проверьте базу данных (рекомендуемая процедура) следующим образом.

    1. Попытайтесь создать резервную копию заключительного фрагмента журнала.

    2. Восстановите базу данных из полной резервной копии, а затем при необходимости из разностной резервной копии базы данных с помощью инструкции RESTORE …WITH NORECOVERY Transact-SQL.

    3. Если в базе данных используется модель полного восстановления, примените все резервные копии журналов транзакций, с момента создания полной или разностной резервной копии базы данных до момента сбоя, выполнив инструкцию RESTORE LOG … WITH NORECOVERY.

    4. Если необходимо произвести наиболее точное восстановление базы данных на момент сбоя, выполните восстановление базы данных с использованием инструкции RESTORE DATABASE <имя_базы_данных> WITH RECOVERY.

    5. После перехода базы данных в режим «в сети» выполните инструкцию DBCC CHECKDB на языке Transact-SQL, чтобы проверить согласованность базы данных.

  • Попытайтесь перевести базу данных в режим «в сети», используя шаги, описанные для временного состояния ранее в этом разделе.

  • Используйте аварийный режим следующим образом.

    1. Переведите базу данных в состояние EMERGENCY, выполнив следующую инструкцию ALTER DATABASETransact-SQL:

      ALTER DATABASE <database_name> SET EMERGENCY; 
      
    2. Просмотрите выходные данные инструкции ALTER DATABASE и журнал ошибок SQL Server.

    3. Проверьте состояние базы данных в представлении каталога sys.databases.

    4. Выполните проверку согласованности базы данных с помощью инструкции DBCC CHECKDB, чтобы понять природу и степень повреждения.

    5. После оценки выходных данных инструкции DBCC CHECKDB можно выполнить инструкцию DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS.

      ПредупреждениеВнимание!

      Перед использованием этого параметра внимательно просмотрите сведения об устранении ошибок в аварийном режиме в подразделе DBCC CHECKDB (Transact-SQL) электронной документации по SQL Server.

ПримечаниеПримечание

Сведения о том, что нужно делать при проблемах оборудования, связанных с ошибкой 3313, 3314, 3414 или 3356, см. в разделе MSSQLSERVER_824.

Шаги по предотвращению данной ошибки

Чтобы избежать повторения этой ситуации, выполните следующие действия.

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

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