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

Применимо к: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).

См. также