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


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

Область применения: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.

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

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

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

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

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

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

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

Системная ERROR_SEVERITY функция может использоваться для получения серьезности ошибки, которая привела CATCH к выполнению блока TRY...CATCH конструкции. ERROR_SEVERITY возвращается NULL , если вызывается вне области CATCH блока. Дополнительные сведения см. в ERROR_SEVERITY.