ядро СУБД серьезности ошибок
Область применения: 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).