Основные сведения об ошибках ядра СУБД
Ошибки, возникшие в компоненте Microsoft SQL Server Database Engine, имеют атрибуты, описанные в следующей таблице.
Атрибут | Описание |
---|---|
Номер ошибки |
Каждое сообщение имеет уникальный номер ошибки. |
Строка сообщения об ошибке |
Сообщение об ошибке содержит диагностические сведения о причине ошибки. Многие сообщения об ошибках имеют подстановочные переменные, в которые заносятся сведения, например имя объекта, вызвавшего ошибку. |
Серьезность ошибки |
Степень серьезности ошибки указывает, насколько она значительна. Ошибки с низкой степенью серьезности, например 1 или 2, являются информационными сообщениями или предупреждениями низкого уровня. Ошибки с высокой степенью серьезности указывают на проблемы, которые должны быть решены как можно быстрее. Дополнительные сведения об уровнях серьезности см. в разделе Уровни серьезности ошибок ядра СУБД. |
Состояние |
Некоторые сообщения об ошибках могут возникнуть в нескольких точках кода компонента Database Engine. Например, ошибка 1105 может возникнуть при различных условиях. Каждое условие, которое вызывает ошибку, присваивает уникальный код состояния. При просмотре баз данных со сведениями об известных неполадках, таких как база знаний Microsoft, можно использовать номер состояния, чтобы определить, является ли записанная неполадка возникшей ошибкой. Например, если статья базы знаний описывает ошибку 1105 с состоянием 2, а получена ошибка 1105 с состоянием 3, ошибка, вероятно, возникла не по той причине, которая описана в статье. Инженер поддержки Майкрософт также может использовать код состояния, содержащийся в сообщении об ошибке, чтобы найти место в исходном коде, где эта ошибка возникла. Эти данные могут предоставить дополнительные сведения для диагностики проблемы. |
Имя процедуры |
Имя хранимой процедуры или триггера, в которых произошла ошибка. |
Номер строки |
Указывает на инструкцию в пакете, хранимой процедуре, триггере или функции, которая сформировала ошибку. |
Все системные и пользовательские сообщения об ошибках в экземпляре компонента Database Engine содержатся в представлении каталога sys.messages. Инструкцию RAISERROR можно использовать для возвращения пользовательских ошибок приложению.
Все API-интерфейсы базы данных, например, пространство имен Microsoft .NET Framework SQLClient, ActiveX Data Objects (ADO), OLE DB и Open Database Connectivity (ODBC), сообщают основные атрибуты ошибки. Эти сведения включают номер ошибки и строку сообщения. Однако не все API-интерфейсы сообщают остальные атрибуты ошибки. Дополнительные сведения см. в разделе Обработка ошибок и сообщений в приложениях.
Сведения об ошибке, которая появляется внутри области TRY конструкции TRY…CATCH, могут быть получены в коде Transact-SQL при использовании таких функций как ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY и ERROR_STATE внутри области соответствующего блока CATCH. Дополнительные сведения см. в разделах Получение сведений об ошибках в языке Transact-SQL и Использование конструкции TRY...CATCH в языке Transact-SQL.
Примеры
Следующий пример обращается с запросом к представлению каталога sys.messages
, возвращающим список всех системных и пользовательских сообщений об ошибках в Database Engine, содержащими английский текст (1033
).
SELECT
message_id,
language_id,
severity,
is_event_logged,
text
FROM sys.messages
WHERE language_id = 1033;
Дополнительные сведения см. в разделе sys.messages (Transact-SQL).
См. также
Другие ресурсы
sys.messages (Transact-SQL)
Использование инструкции RAISERROR
Использование функции @@ERROR
TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)