MSSQLSERVER_5180
Область применения: SQL Server
Сведения
Атрибут | Значение |
---|---|
Название продукта | SQL Server |
ИД события | 5180 |
Источник событий | MSSQLSERVER |
Компонент | SQLEngine |
Символическое имя | DSK_BAD_FCB_FILEID |
Текст сообщения | Невозможно открыть файл FCB из-за недопустимого идентификатора %d в базе данных "%.*ls". Проверьте местоположение этого файла. Выполните инструкцию DBCC CHECKDB. |
Описание
Запрос или операция могут завершиться ошибкой 5180, если на ядро СУБД SQL Server ссылается недопустимый идентификатор файла. Пример:
Сообщение 5180, уровень 22, состояние 1, строка 1
Невозможно открыть файл FCB из-за недопустимого идентификатора %d в базе данных "%.*ls". Проверьте местоположение этого файла. Выполните инструкцию DBCC CHECKDB.
Так как ошибка имеет уровень серьезности 22, сеанс пользователя будет отключен. Это сообщение об ошибке записывается в журнал ошибок SQL Server и журнал событий приложения Windows с eventID = 5180.
Возможные причины
SQL Server ядро СУБД ссылается на идентификатор файла во многих различных ситуациях в основном при ссылке на идентификатор страницы (так как идентификатор файла является первой частью идентификатора страницы). Если по какой-либо причине идентификатор файла, на который ссылается ссылка, равен < 0 или не является допустимым идентификатором файла в базе данных (для допустимых идентификаторов файлов, перечисленных в представлениях системного каталога, таких как sys.database_files), может возникнуть ошибка 5180.
Одной из возможных причин является то, что хранимый идентификатор файла недопустим. Так как перенаправляемая запись в строке ссылается на другую страницу, при обращении к этой странице может возникнуть ошибка 5180, если идентификатор файла недопустим. Это приведет к ошибке повреждения базы данных на странице с перенаправляемой записью. (В данном примере DBCC CHECKDB
выдаст сообщение 8993.)
Другой пример — недопустимый идентификатор файла как часть идентификатора страницы, который хранится в заголовке страницы для следующего или предыдущего идентификатора страницы. Это поле используется для связывания ряда страниц, например в кластеризованном индексе. Если идентификатор файла является недопустимым для предыдущей или следующей страницы, то, когда ядру необходимо сослаться на него для перехода к следующей или предыдущей странице, может возникнуть ошибка 5180. (В данном примере DBCC CHECKDB
выдает сообщение 8981.)
Если проблема не является недопустимым идентификатором файла из-за поврежденного хранящегося идентификатора страницы, проблема может находиться в ядро СУБД SQL Server.
Действие пользователя
При возникновении этой ошибки следует выполнить DBCC CHECKDB
для базы данных, как указано в сообщении. При обнаружении ошибок следует выполнить восстановление из известной удачной резервной копии. Если восстановление из резервной копии невозможно, другой вариант — воспользоваться параметром восстановления команды DBCC CHECKDB
, как рекомендуется в ее выходных данных. В большинстве случаев восстановление после ошибки этого типа приводит к потере данных. Дополнительные сведения об использовании и причинах повреждения базы данных см. в статье: устранение ошибок согласованности баз данных, сообщаемых DBCC CHECKDB.
Если DBCC CHECKDB
не сообщает об ошибках, но проблема повторяется, обратитесь за помощью в службу технической поддержки Майкрософт. Будьте готовы предоставить запрос, который вызывает ошибку 5180. Сведения о том, как определить запрос, при выполнении которого произошла ошибка, см. в разделе Дополнительные сведения.
Дополнительные сведения
Блок управления файлами (FCB) — это внутренняя структура памяти, которая отслеживает важные сведения о файле, связанном с базой данных. Идентификатор файла однозначно определяет FCB для базы данных. Если ядро сервера пытается сослаться на недопустимый идентификатор файла, структуру FCB найти не удается, из-за чего происходит ошибка 5180.
Чтобы узнать, при выполнении какого запроса возникла ошибка, можно использовать указанные ниже методы.
- Для SQL Server 2008 и более поздних версий убедитесь, что system_health сеанс содержит запись об ошибке, которая должна содержать текст запроса. Дополнительные сведения о сеансе system_health см. в статье о поддержке SQL Server 2008: сеанс system_health.
- Используйте SQL Server Profiler и зафиксировать события исключений
SQL:BatchStarting
RPC:Starting
, а также события исключений. Найдите запрос, предшествующий событию исключения 5180 для сеанса, связанного с событием исключения.