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


ядро СУБД серьезности ошибок

Область применения: SQL Server

При возникновении ошибки ядро СУБД SQL Server серьезность ошибки указывает тип проблемы, возникшую в SQL Server.

Уровни серьезности

В следующей таблице перечислены уровни серьезности ошибок, вызванных ядро СУБД SQL Server.

Уровень серьезности Description
0–9 Информационные сообщения, возвращающие сведения о состоянии или сообщающие об ошибках, которые не являются серьезными. Ядро СУБД не вызывает системные ошибки с серьезностью от 0 до 9.
10 Информационные сообщения, возвращающие сведения о состоянии или сообщающие об ошибках, которые не являются серьезными. По соображениям совместимости ядро СУБД преобразует уровень серьезности 10 в значение 0 перед возвратом сведений об ошибке в вызывающее приложение.
11-16 Ошибки, которые могут исправляться пользователем.
11 Указывает, что данный объект или сущность не существует.
12 Особая серьезность запросов, которые не используют блокировку из-за специальных подсказок запросов. В некоторых случаях операции чтения, выполняемые этими операторами, могут привести к несогласованным данным, так как блокировки не принимаются для обеспечения согласованности.
13 Указывает ошибки взаимоблокировки транзакций.
14 Указывает ошибки, связанные с безопасностью, например запрет на разрешение.
15 Указывает синтаксические ошибки в команде Transact-SQL.
16 Обозначает общие ошибки, которые могут исправляться пользователем.
17-19 Укажите ошибки программного обеспечения, которые не могут быть исправлены пользователем. Сообщите администратору системы о данной проблеме.
17 Указывает, что инструкция вызвала нехватку ресурсов SQL Server (например, памяти, блокировки или дискового пространства для базы данных) или превышение определенного ограничения, заданного системным администратором.
18 Указывает проблему в программном обеспечении ядро СУБД, но инструкция завершает выполнение, а подключение к экземпляру ядро СУБД поддерживается. Необходимо сообщить системному администратору о каждом случае возникновения ошибки со степенью серьезности 18.
19 Указывает, что превышено неконфигурируемое ограничение ядро СУБД и завершен текущий пакетный процесс. Сообщения об ошибке со степенью серьезности 19 и выше останавливают выполнение текущего пакета. Ошибки со степенью серьезности 19 происходят редко и должны устраняться системным администратором или основной службой технической поддержки. При возникновении ошибок со степенью серьезности 19 обратитесь к системному администратору. Сообщения об ошибках со степенью серьезности от 19 до 25 записываются в журнал ошибок.
20–24 Укажите системные проблемы и являются неустранимыми ошибками, что означает, что задача ядро СУБД, выполняющая инструкцию или пакет, больше не выполняется. Задача записывает сведения о том, что произошло, и затем прекращает работу. В большинстве случаев подключение приложения к экземпляру ядро СУБД также может завершиться. В этом случае приложение, возможно, не сможет вновь выполнить подключение (в зависимости от проблемы).

Сообщения об ошибках этого диапазона могут влиять на все процессы, обращающиеся к данным в одной и той же базе данных, и могут указывать на то, что база данных или объект повреждены. Сообщения об ошибках со степенью серьезности от 19 до 24 записываются в журнал ошибок.
20 Обозначает, что при выполнении инструкции возникла проблема. Так как проблема повлияла только на текущую задачу, маловероятно, что повреждена база данных.
21 Обозначает, что возникла проблема, влияющая на все задачи в текущей базе данных, но маловероятно, что повреждена база данных.
22 Обозначает, что таблица или индекс, указанные в сообщении, повреждены из-за программной проблемы или проблемы оборудования.

Ошибки степени серьезности 22 происходят редко. При возникновении одного из них выполните команду DBCC CHECKDB , чтобы определить, повреждены ли другие объекты в базе данных. Проблема может быть ограничена только буферным кэшем и не затрагивать сам диск. При этом перезапуск экземпляра ядро СУБД исправляет проблему. Чтобы продолжить работу, необходимо повторно подключиться к экземпляру ядро СУБД; в противном случае используйте DBCC для восстановления проблемы. В некоторых случаях может потребоваться восстановление базы данных.

Если перезапуск экземпляра ядро СУБД не исправляет проблему, проблема находится на диске. Иногда удаление объекта, указанного в сообщении об ошибке, может решить проблему. Например, если сообщение сообщает, что экземпляр ядро СУБД нашел строку длиной 0 в некластеризованном индексе, удалите индекс и перестроите его.
23 Обозначает, что из-за проблем в оборудовании или программном обеспечении целостность всей базы данных находится под вопросом.

Ошибки степени серьезности 23 происходят редко. Если это происходит, выполните команду DBCC CHECKDB , чтобы определить степень ущерба. Проблема может быть ограничена только кэшем, и не затрагивать сам диск. При этом перезапуск экземпляра ядро СУБД исправляет проблему. Чтобы продолжить работу, необходимо повторно подключиться к экземпляру ядро СУБД; в противном случае используйте DBCC для восстановления проблемы. В некоторых случаях может потребоваться восстановление базы данных.
24 Обозначает неисправность носителя. Возможно, системный администратор должен восстановить базу данных. Кроме того, может потребоваться обращение к поставщику оборудования.

Серьезность сообщения об ошибке, определяемого пользователем

Вы можете добавлять sp_addmessage пользовательские сообщения об ошибках с серьезностью от 1 до 25 в sys.messages представление каталога. Эти пользовательские сообщения об ошибках можно использовать.RAISERROR Дополнительные сведения см. в sp_addmessage (Transact-SQL).

RAISERROR можно использовать для создания пользовательских сообщений об ошибках с серьезностью от 1 до 25. RAISERROR Может ссылаться на определяемое пользователем сообщение об ошибке sys.messages , хранящееся в представлении каталога, или динамически создавать сообщение. При использовании определяемого пользователем сообщения об ошибке при sys.messages создании ошибки серьезность, указанная RAISERROR путем переопределения серьезности, указанной в sys.messages. Дополнительные сведения см. в разделе справки RAISERROR (Transact-SQL).

Серьезность ошибок и TRY... ЛОВИТЬ

ПОПРОБУЙТЕ... Конструкция CATCH перехватывает все ошибки выполнения с серьезностью больше 10, которые не завершают подключение к базе данных.

Ошибки с серьезностью от 0 до 10 являются информационными сообщениями и не вызывают переход от блока CATCH для TRY... Конструкция CATCH.

Ошибки, которые завершают подключение к базе данных, обычно с серьезностью от 20 до 25, не обрабатываются блоком CATCH, так как выполнение прерывается при завершении подключения.

Дополнительные сведения см. в разделе TRY...CATCH (Transact-SQL).

Получение серьезности ошибок

Чтобы определить серьезность ошибки, инициирующей выполнение блока CATCH конструкции TRY…CATCH, можно использовать системную функцию ERROR_SEVERITY. Если вызов происходит не из блока CATCH, функция ERROR_SEVERITY возвращает значение NULL. Дополнительные сведения см. в разделе ERROR_SEVERITY (Transact-SQL).

См. также