События
15 сент., 06 - 17 сент., 15
Лучшее событие обучения под руководством сообщества SQL. Сентябрь 2025 г. Сохраните 200 евро с кодом FABLEARN.
Получение регистрацииЭтот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server
Управляемый экземпляр SQL Azure
конечную точку аналитики платформы Аналитики Azure Synapse Analytics
(PDW)
в хранилище Microsoft Fabric
в Microsoft Fabric
Возвращает номер состояния для ошибки, вызвавшей запуск блока CATCH в конструкции TRY…CATCH.
Соглашения о синтаксисе Transact-SQL
ERROR_STATE ( )
int
При вызове в блоке CATCH возвращает номер состояния сообщения об ошибке, вызвавшей запуск блока CATCH.
Возвращает значение NULL в случае вызова вне блока CATCH.
Некоторые сообщения об ошибках могут возникать в нескольких точках кода для ядро СУБД Microsoft SQL Server. Например, в нескольких различных ситуациях может возникнуть ошибка «1105». Каждому определенному условию, вызывающему ошибку, назначен уникальный код состояния.
При просмотре баз данных известных проблем, таких как База знаний Майкрософт, можно использовать номер состояния, чтобы определить, может ли записанная проблема совпадать с обнаруженной ошибкой. Например, если в статье базы знаний рассматривается сообщение об ошибке 1105 с состоянием 2, а полученное сообщение об ошибке 1105 имеет состояние 3, то в этом случае ошибка произошла по иной причине, чем ошибка, описанная в статье.
Инженер службы поддержки SQL Server также может использовать код состояния из ошибки, чтобы найти расположение в исходном коде, где возникает эта ошибка, что может предоставить дополнительные идеи о том, как диагностировать проблему.
Функцию ERROR_STATE можно вызывать в любом месте области видимости блока CATCH.
Функция ERROR_STATE возвращает состояние ошибки вне зависимости от числа ее запусков или места запуска в области видимости блока CATCH. Это отличается от функций, таких как @@ERROR, которое возвращает только номер ошибки в инструкции сразу после ошибки или в первой инструкции блока CATCH.
Во вложенных блоках CATCH функция ERROR_STATE возвращает состояние ошибки, относящееся к области видимости блока CATCH, в которой она вызвана. Например, блок CATCH внешней конструкции TRY...CATCH может содержать вложенную конструкцию TRY...CATCH. Во вложенном блоке CATCH функция ERROR_STATE возвращает состояние ошибки, вызвавшей вложенный блок CATCH. Если функция ERROR_STATE запускается во внешнем блоке CATCH, то она возвращает состояние ошибки, вызвавшей внешний блок CATCH.
В следующем примере приведена инструкция SELECT
, вызывающая ошибку деления на ноль. Возвращается состояние ошибки.
BEGIN TRY
-- Generate a divide by zero error
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_STATE() AS ErrorState;
END CATCH;
GO
В следующем примере приведена инструкция SELECT
, вызывающая ошибку деления на ноль. Вместе с состоянием ошибки возвращаются сведения, относящиеся к этой ошибке.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
В следующем примере приведена инструкция SELECT
, вызывающая ошибку деления на ноль. Вместе с состоянием ошибки возвращаются сведения, относящиеся к этой ошибке.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
sys.messages (Transact-SQL)
ПОПЫТКА... CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Справочник по ошибкам и событиям (ядро СУБД)
События
15 сент., 06 - 17 сент., 15
Лучшее событие обучения под руководством сообщества SQL. Сентябрь 2025 г. Сохраните 200 евро с кодом FABLEARN.
Получение регистрации