Основные сведения об ошибках компонента Database Engine
Ошибки, возникшие в компоненте Microsoft Компонент SQL Server Database Engine, имеют атрибуты, описанные в следующей таблице.
Атрибут |
Описание |
---|---|
Номер ошибки |
Каждое сообщение имеет уникальный номер ошибки. |
Строка сообщения об ошибке |
Сообщение об ошибке содержит диагностические сведения о причине ошибки. Многие сообщения об ошибках имеют подстановочные переменные, в которые заносятся сведения, например имя объекта, вызвавшего ошибку. |
Серьезность ошибки |
Степень серьезности ошибки указывает, насколько она значительна. Ошибки с низкой степенью серьезности, например 1 или 2, являются информационными сообщениями или предупреждениями низкого уровня. Ошибки с высокой степенью серьезности указывают на проблемы, которые должны быть решены как можно быстрее. Дополнительные сведения об уровнях серьезности см. в разделе Степени серьезности ошибок компонента Database Engine. |
Состояние |
Некоторые сообщения об ошибках могут возникнуть в нескольких точках кода компонента Компонент Database Engine. Например, ошибка 1105 может возникнуть при различных условиях. Каждое условие, которое вызывает ошибку, присваивает уникальный код состояния. При просмотре баз данных со сведениями об известных неполадках, таких как база знаний Майкрософт, можно использовать номер состояния, чтобы определить, является ли записанная неполадка возникшей ошибкой. Например, если статья базы знаний описывает ошибку 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. Дополнительные сведения см. в разделе 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).