Основные сведения об ошибках компонента Database Engine

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

Ошибки, вызванные ядро СУБД Microsoft SQL Server, имеют атрибуты, описанные в следующей таблице.

Атрибут Description
Номер ошибки Каждое сообщение имеет уникальный номер ошибки.
Строка сообщения об ошибке Сообщение об ошибке содержит диагностические сведения о причине ошибки. Многие сообщения об ошибках имеют подстановочные переменные, в которые заносятся сведения, например имя объекта, вызвавшего ошибку.
Важность Степень серьезности ошибки указывает, насколько она значительна. Ошибки с низкой степенью серьезности, например 1 или 2, являются информационными сообщениями или предупреждениями низкого уровня. Ошибки с высокой степенью серьезности указывают на проблемы, которые должны быть решены как можно быстрее. Дополнительные сведения о степенях серьезности см. в разделе Степени серьезности ошибок компонента Database Engine.
State Некоторые сообщения об ошибках могут вызываться в нескольких точках в коде для ядра СУБД. Например, ошибка 1105 может возникнуть при различных условиях. Каждое условие, которое вызывает ошибку, присваивает уникальный код состояния.

При просмотре баз данных, содержащих сведения о известных проблемах, таких как База знаний Майкрософт, можно использовать номер состояния, чтобы определить, совпадает ли обнаруженная ошибка. Например, если статья базы знаний описывает ошибку 1105 с состоянием 2, а получена ошибка 1105 с состоянием 3, ошибка, вероятно, возникла не по той причине, которая описана в статье.

Инженер службы поддержки Майкрософт также может использовать код состояния из ошибки, чтобы найти расположение в исходном коде, в котором возникает этот код ошибки. Эти данные могут предоставить дополнительные сведения для диагностики проблемы.
Имя процедуры Имя хранимой процедуры или триггера, в которых произошла ошибка.
Номер строки Указывает на инструкцию в пакете, хранимой процедуре, триггере или функции, которая сформировала ошибку.

Все системные и пользовательские сообщения об ошибках в экземпляре ядро СУБД содержатся в представлении каталога sys.messages. Инструкцию RAISERROR можно использовать для возвращения пользовательских ошибок приложению.

Все API базы данных, такие как пространство имен Microsoft платформа .NET Framework SQLClient, объекты данных ActiveX (ADO), OLE DB и Open Database Подключение ivity (ODBC), сообщают об основных атрибутах ошибок. Эти сведения включают номер ошибки и строку сообщения. Однако не все API-интерфейсы сообщают остальные атрибуты ошибки.

Сведения об ошибке, возникающей в область блока TRY try... Конструктор CATCH можно получить в коде Transact-SQL с помощью таких функций, как ERROR_LINE, ERROR_MESSAGE, ERROR_NUМБ ER, ERROR_PROCEDURE, ERROR_SEVERITY и ERROR_STATE в область связанного блока CATCH. Дополнительные сведения см. в разделе TRY...CATCH (Transact-SQL).

Примеры

В следующем примере представление каталога запрашивает sys.messages список всех системных и пользовательских сообщений об ошибках в ядро СУБД с текстом на английском языке (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 (Transact-SQL)
@@ERROR (Transact-SQL)
ПОПРОБОВАТЬ... CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUМБ ER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)