Понимание ошибок компонента Database Engine
Область применения:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Конечная точка аналитики SQL в Microsoft Fabric
Хранилище в Microsoft Fabric
Ошибки, вызванные ядром базы данных Microsoft SQL Server, имеют атрибуты, описанные в следующей таблице.
Атрибут | Описание |
---|---|
Номер ошибки | Каждое сообщение имеет уникальный номер ошибки. |
Строка сообщения об ошибке | Сообщение об ошибке содержит диагностические сведения о причине ошибки. Многие сообщения об ошибках имеют подстановочные переменные, в которые заносятся сведения, например имя объекта, вызвавшего ошибку. |
Тяжесть | Степень серьезности ошибки указывает, насколько она значительна. Ошибки с низкой степенью серьезности, например 1 или 2, являются информационными сообщениями или предупреждениями низкого уровня. Ошибки с высокой степенью серьезности указывают на проблемы, которые должны быть решены как можно быстрее. Дополнительные сведения о степенях серьезности см. в разделе Степени серьезности ошибок компонента Database Engine. |
Штат | Некоторые сообщения об ошибках могут вызываться в нескольких точках в коде для ядра СУБД. Например, ошибка 1105 может возникнуть при различных условиях. Каждое условие, которое вызывает ошибку, присваивает уникальный код состояния. При просмотре баз данных, содержащих сведения о известных проблемах, таких как База знаний Майкрософт, можно использовать номер состояния, чтобы определить, совпадает ли обнаруженная ошибка. Например, если статья базы знаний описывает ошибку 1105 с состоянием 2, а получена ошибка 1105 с состоянием 3, ошибка, вероятно, возникла не по той причине, которая описана в статье. Инженер службы поддержки Майкрософт также может использовать код состояния ошибки, чтобы найти место в исходном коде, где возникает этот код ошибки. Эти данные могут предоставить дополнительные сведения для диагностики проблемы. |
Имя процедуры | Имя хранимой процедуры или триггера, в которых произошла ошибка. |
Номер строки | Указывает на инструкцию в пакете, хранимой процедуре, триггере или функции, которая сформировала ошибку. |
Все системные и пользовательские сообщения об ошибках в экземпляре СУБД содержатся в представлении каталога sys.messages. Инструкцию RAISERROR можно использовать для передачи ошибок, определяемых пользователем, приложению.
Все API для работы с базами данных, такие как пространство имен Microsoft .NET Framework SQLClient, объекты данных ActiveX (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
, чтобы вернуть список всех системных и определяемых пользователем сообщений об ошибках в Движке базы данных с текстом на английском языке (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)
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)