Устранение неполадок 3313, 3314, 3414 или 3456 в SQL Server
Ошибка при выполнении операции повтора, отката или восстановления базы данных SQL Server переводит базы данных в состояние SUSPECT. К таким ошибкам относятся следующие: 3313 (ошибка повтора действия с журналом), 3314 (ошибка отката действия с журналом), 3414 (ошибка восстановления, препятствующая перезапуску базы данных) и ошибка 3456 (ошибка повтора транзакции, занесенной в журнал).
Объяснение
Ошибка при выполнении операции повтора, отката или восстановления переводит базу данных в состояние SUSPECT, поскольку первичная файловая группа и, возможно, другие файловые группы могут быть повреждены. База данных недоступна, и для устранения проблемы требуется вмешательство пользователя.
Примечание |
---|
Если эта ошибка возникает для tempdb, экземпляр SQL Server завершает работу. |
Действие пользователя
Ошибка при выполнении операции повтора, отката или восстановления может быть вызвана временным состоянием или неустранимым сбоем, который возникает при каждой попытке запуска базы данных.
Для выяснения причины конкретного случая ошибки 3313, 3314, 3414 или 3456 проверьте журнал событий Windows, в котором должна содержаться предшествующая ошибка, которая указывает на конкретный сбой. Правильные действия пользователя зависят от того, указывают ли данные в журнале событий Windows на то, что ошибка SQL Server была вызвана временным состоянием или неустранимым сбоем.
Примечание |
---|
При появлении какого-либо из условий возникновения этих ошибок SQL Server обычно создает три файла в папке SQL Server LOG. Файл SQLDumpnnnn.txt содержит дополнительные данные диагностики, относящиеся к сбоям, включая сведения о транзакции и о странице, на которой возникла проблема. Эти сведения обычно используются группой поддержки продукта для анализа причины сбоя. |
Для временного состояния выполните следующие действия.
Попытайтесь перевести базу данных в режим «в сети», выполнив следующую инструкцию ALTER DATABASETransact-SQL:
ALTER DATABASE <database name> SET ONLINE;
Чтобы определить, завершилось ли восстановление успешно и перешла ли база данных в режим «в сети», просмотрите журнал ошибок SQL Server и представление каталога sys.databases.
Если база данных работает в режиме «в сети», выполните инструкцию DBCC CHECKDBTransact-SQL, чтобы проверить согласованность базы данных.
Для неустранимого сбоя выполните следующие действия.
Проверьте журнал ошибок SQL Server на наличие ошибок, диагностика которых выполняется (3313, 3314, 3414 и 3356), и просмотрите сообщения, предшествовавшие этой ошибке, чтобы определить, можно ли вручную устранить эти ошибки. Если можно устранить предшествовавшие ошибки, выполните одну из следующих процедур.
Восстановите и проверьте базу данных (рекомендуемая процедура) следующим образом.
Попытайтесь создать резервную копию заключительного фрагмента журнала.
Восстановите базу данных из полной резервной копии, а затем, возможно, и из разностной резервной копии базы данных с помощью инструкции RESTORE …WITH NORECOVERY Transact-SQL.
Если в базе данных используется модель полного восстановления, примените все резервные копии журналов транзакций от полного или разностного восстановления базы данных до точки сбоя, выполнив инструкцию RESTORE LOG … WITH NORECOVERY.
Если выполнено наиболее точное восстановление базы данных к точке сбоя, выполните восстановление базы данных с использованием инструкции RESTORE DATABASE <имя_базы_данных> WITH RECOVERY.
После перехода базы данных в режим «в сети» выполните инструкцию DBCC CHECKDBTransact-SQL, чтобы проверить согласованность базы данных.
Попытайтесь перевести базу данных в режим «в сети», используя шаги, описанные для временного состояния ранее в этом разделе.
Используйте аварийный режим следующим образом.
Переведите базу данных в состояние EMERGENCY, выполнив следующую инструкцию ALTER DATABASETransact-SQL:
ALTER DATABASE <database_name> SET EMERGENCY;
Просмотрите выходные данные инструкции ALTER DATABASE и журнал ошибок SQL Server.
Проверьте состояние базы данных в представлении каталога sys.databases.
Выполните проверку согласованности базы данных с использованием инструкции DBCC CHECKDB, чтобы понять природу и степень повреждения.
После оценки выходных данных инструкции DBCC CHECKDB можно выполнить инструкцию DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS.
Внимание! Перед использованием параметра внимательно просмотрите сведения об устранении ошибок в аварийном режиме в подразделе DBCC CHECKDB (Transact-SQL) электронной документации по SQL Server.
Примечание |
---|
Сведения о том, что нужно делать при проблемах в оборудовании, связанных с ошибкой 3313, 3314, 3414 или 3356, см. в разделе MSSQLSERVER_824. |
Шаги по предотвращению данной ошибки
Чтобы избежать повторения этой ситуации, выполните следующие действия.
Проверьте журнал ошибок SQL Server и журнал событий Windows на предмет появления во всей системе проблем, которые могут вызвать эту ошибку.
Для исключения известных проблем в продукте, которые могут вызвать данное состояние, примените самое последнее накопительное обновление для вашей версии SQL Server.
См. также