RAISERROR (Transact-SQL)RAISERROR (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ ЭТОЙ СТАТЬИ: даSQL Server (начиная с 2008)даБаза данных SQL AzureдаХранилище данных SQL AzureдаParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Создает сообщение об ошибке и запускает обработку ошибок для сеанса.Generates an error message and initiates error processing for the session. Инструкция RAISERROR может либо ссылаться на определенное пользователем сообщение, находящееся в представлении каталога sys.messages, либо динамически создавать сообщение.RAISERROR can either reference a user-defined message stored in the sys.messages catalog view or build a message dynamically. Это сообщение возвращается как сообщение об ошибке сервера вызывающему приложению или соответствующему блоку CATCH конструкции TRY…CATCH.The message is returned as a server error message to the calling application or to an associated CATCH block of a TRY…CATCH construct. В новых же приложениях следует использовать инструкцию THROW.New applications should use THROW instead.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

-- Syntax for SQL Server and Azure SQL Database  

RAISERROR ( { msg_id | msg_str | @local_variable }  
    { ,severity ,state }  
    [ ,argument [ ,...n ] ] )  
    [ WITH option [ ,...n ] ]  
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  

RAISERROR ( { msg_str | @local_variable }  
    { ,severity ,state }  
    [ ,argument [ ,...n ] ] )  
    [ WITH option [ ,...n ] ]  

АргументыArguments

msg_idmsg_id
Номер сообщения об ошибке, определенного пользователем, которое сохранено в представлении каталога sys.messages при помощи процедуры sp_addmessage.Is a user-defined error message number stored in the sys.messages catalog view using sp_addmessage. Номера пользовательских сообщений об ошибках должны быть больше 50 000.Error numbers for user-defined error messages should be greater than 50000. Если аргумент msg_id не определен, то инструкция RAISERROR создает сообщение об ошибке с номером ошибки 50000.When msg_id is not specified, RAISERROR raises an error message with an error number of 50000.

msg_strmsg_str
Определенное пользователем сообщение с форматом, аналогичным формату функции printf из стандартной библиотеки языка С.Is a user-defined message with formatting similar to the printf function in the C standard library. Это сообщение об ошибке не должно содержать более 2 047 символов.The error message can have a maximum of 2,047 characters. Если сообщение содержит 2 048 и более символов, то отображаются только первые 2 044, а за ними появляется знак многоточия, показывающий, что сообщение было усечено.If the message contains 2,048 or more characters, only the first 2,044 are displayed and an ellipsis is added to indicate that the message has been truncated. Обратите внимание, что параметры подстановки содержат больше символов, чем видно на выходе из-за внутренней структуры хранения.Note that substitution parameters consume more characters than the output shows because of internal storage behavior. Например, если параметр подстановки %d имеет значение 2, он выводит один символ в строку сообщения, хотя при хранении занимает три дополнительных символа.For example, the substitution parameter of %d with an assigned value of 2 actually produces one character in the message string but also internally takes up three additional characters of storage. Из-за этой особенности хранения количество доступных символов для выходного сообщения уменьшается.This storage requirement decreases the number of available characters for message output.

Если аргумент msg_str определен, инструкция RAISERROR создает сообщение об ошибке с номером ошибки 50000.When msg_str is specified, RAISERROR raises an error message with an error number of 50000.

Аргумент msg_str является символьной строкой, которая может содержать спецификации преобразования.msg_str is a string of characters with optional embedded conversion specifications. Каждая спецификация преобразования определяет, каким образом значение из списка аргументов будет отформатировано и помещено в поле в местоположении спецификации преобразования в строке msg_str.Each conversion specification defines how a value in the argument list is formatted and placed into a field at the location of the conversion specification in msg_str. Спецификации преобразования имеют следующий формат:Conversion specifications have this format:

% [[flag] [width] [.% [[flag] [width] [. precision] [{h | l}]] typeprecision] [{h | l}]] type

В строке msg_str могут использоваться следующие параметры:The parameters that can be used in msg_str are:

flagflag

Код, определяющий промежутки и выравнивание подставляемого значения.Is a code that determines the spacing and justification of the substituted value.

КодCode Префикс или выравниваниеPrefix or justification DescriptionDescription
- (знак «минус»)- (minus) Выравнивать слеваLeft-justified Выравнивает значение аргумента по левой границе поля заданной ширины.Left-justify the argument value within the given field width.
+ (знак «плюс»)+ (plus) Префикс знакаSign prefix Добавляет перед значением аргумента знак «плюс» (+) или «минус» (-), если значение принадлежит к типу со знаком.Preface the argument value with a plus (+) or minus (-) if the value is of a signed type.
0 (ноль)0 (zero) Дополнение нулямиZero padding Добавляет к выходному значению спереди нули до тех пор, пока не будет достигнута минимальная ширина.Preface the output with zeros until the minimum width is reached. При одновременном указании 0 и знака «минус» (-) флаг 0 не учитывается.When 0 and the minus sign (-) appear, 0 is ignored.
# (число)# (number) Префикс 0x для шестнадцатеричного типа x или X0x prefix for hexadecimal type of x or X При использовании формата o, x или X флаг знака числа (#) предшествует любому ненулевому значению 0, 0x или 0X соответственно.When used with the o, x, or X format, the number sign (#) flag prefaces any nonzero value with 0, 0x, or 0X, respectively. Если флаг знака числа (#) стоит перед d, i или u, он пропускается.When d, i, or u are prefaced by the number sign (#) flag, the flag is ignored.
' ' (blank)' ' (blank) Заполнение пробеламиSpace padding Добавляет к выходным значениям пробелы, если значение со знаком и положительно.Preface the output value with blank spaces if the value is signed and positive. Этот параметр не учитывается, если включается вместе с флагом знака «плюс» (+).This is ignored when included with the plus sign (+) flag.

widthwidth

Целое число, определяющее минимальную ширину поля, в которое помещается значение аргумента.Is an integer that defines the minimum width for the field into which the argument value is placed. Если длина значения аргумента равна значению параметра width или превышает его, то значение записывается без заполнения.If the length of the argument value is equal to or longer than width, the value is printed with no padding. Если значение короче, чем значение параметра width, оно дополняется до длины, определенной в параметре width.If the value is shorter than width, the value is padded to the length specified in width.

Символ «звездочка» (*) означает, что ширина определяется соответствующим аргументом в списке аргументов, значение которого должно быть целым числом.An asterisk (*) means that the width is specified by the associated argument in the argument list, which must be an integer value.

precisionprecision

Максимальное число символов, берущееся из значения аргумента для значения строки.Is the maximum number of characters taken from the argument value for string values. Например, если в строке содержится пять символов, а точность равна 3, то для значения строки используются первые три символа.For example, if a string has five characters and precision is 3, only the first three characters of the string value are used.

Для целых значений аргумент precision определяет минимальное количество отображаемых цифр.For integer values, precision is the minimum number of digits printed.

Символ «звездочка» (*) означает, что точность определяется соответствующим аргументом в списке аргументов, значение которого должно быть целым числом.An asterisk (*) means that the precision is specified by the associated argument in the argument list, which must be an integer value.

{h | l} type{h | l} type

Используется с типами символов d, i, o, s, x, X или u, создает значения типа данных shortint (h) или longint (l).Is used with character types d, i, o, s, x, X, or u, and creates shortint (h) or longint (l) values.

Спецификация типаType specification ПредставляетRepresents
d или id or i Целое число со знакомSigned integer
oo Восьмеричное число без знакаUnsigned octal
ss StringString
uu Целое число без знакаUnsigned integer
x или Xx or X Шестнадцатеричное число без знакаUnsigned hexadecimal

Примечание

Эти спецификации типа основаны на изначально определенных доя функции printf в стандартной библиотеке C.These type specifications are based on the ones originally defined for the printf function in the C standard library. Спецификации типов, используемые в строках сообщений инструкции RAISERROR, сопоставляются с типами данных языка Transact-SQLTransact-SQL, а спецификации, используемые в функции printf, сопоставляются с типами данных языка C.The type specifications used in RAISERROR message strings map to Transact-SQLTransact-SQL data types, while the specifications used in printf map to C language data types. Спецификации типов, используемые в функции printf, не поддерживаются инструкцией RAISERROR, если в языке Transact-SQLTransact-SQL нет типов данных, схожих с соответствующими типами данных языка C.Type specifications used in printf are not supported by RAISERROR when Transact-SQLTransact-SQL does not have a data type similar to the associated C data type. Например, спецификация %p для указателей не поддерживается инструкцией RAISERROR, так как в языке Transact-SQLTransact-SQL нет типа данных для указателей.For example, the %p specification for pointers is not supported in RAISERROR because Transact-SQLTransact-SQL does not have a pointer data type.

Примечание

Для преобразования какого-либо значения в тип данных Transact-SQLTransact-SQL bigint нужно указать спецификацию %I64d.To convert a value to the Transact-SQLTransact-SQL bigint data type, specify %I64d.

@local_variable
Переменная любого допустимого типа данных для символов, содержащая строку того же формата, что и строка msg_str.Is a variable of any valid character data type that contains a string formatted in the same manner as msg_str. Аргумент @local_variable должен иметь тип char или varchar либо должен неявно преобразовываться в эти типы данных.@local_variable must be char or varchar, or be able to be implicitly converted to these data types.

severityseverity
Определенная пользователем степень серьезности, связанный с этим сообщением.Is the user-defined severity level associated with this message. Если при помощи аргумента msg_id вызываются пользовательские сообщения, созданные процедурой sp_addmessage, уровень серьезности, указанный в инструкции RAISERROR, заменяет уровень серьезности, указанный в процедуре sp_addmessage.When using msg_id to raise a user-defined message created using sp_addmessage, the severity specified on RAISERROR overrides the severity specified in sp_addmessage.

Степень серьезности от 0 до 18 может указать любой пользователь.Severity levels from 0 through 18 can be specified by any user. Уровни серьезности от 19 до 25 могут быть указаны только членами предопределенной роли сервера sysadmin и пользователями с разрешениями ALTER TRACE.Severity levels from 19 through 25 can only be specified by members of the sysadmin fixed server role or users with ALTER TRACE permissions. Для степеней серьезности от 19 до 25 требуется параметр WITH LOG.For severity levels from 19 through 25, the WITH LOG option is required. Степени серьезности меньше 0 интерпретируются как 0.Severity levels less than 0 are interpreted as 0. Степени серьезности больше 25 интерпретируются как 25.Severity levels greater than 25 are interpreted as 25.

Внимание!

Уровни серьезности от 20 до 25 считаются неустранимыми.Severity levels from 20 through 25 are considered fatal. Если обнаруживается неустранимый уровень серьезности, то после получения сообщения соединение с клиентом обрывается и регистрируется сообщение об ошибке в журналах приложений и ошибок.If a fatal severity level is encountered, the client connection is terminated after receiving the message, and the error is logged in the error and application logs.

Можно указать -1, чтобы получить степень серьезности, связанную с ошибкой, как показано в следующем примере.You can specify -1 to return the severity value associated with the error as shown in the following example.

RAISERROR (15600,-1,-1, 'mysp_CreateCustomer');  

Ниже приводится результирующий набор.Here is the result set.

Msg 15600, Level 15, State 1, Line 1   
An invalid parameter or option was specified for procedure 'mysp_CreateCustomer'.

statestate
Целое число от 0 до 255.Is an integer from 0 through 255. Для отрицательных значений по умолчанию используется 1.Negative values default to 1. Значения больше 255 использовать не следует.Values larger than 255 should not be used.

Если одна и та же пользовательская ошибка возникает в нескольких местах, то при помощи уникального номера состояния для каждого местоположения можно определить, в каком месте кода появилась ошибка.If the same user-defined error is raised at multiple locations, using a unique state number for each location can help find which section of code is raising the errors.

argumentargument
Параметры, использующиеся при подстановке для переменных, определенных в msg_str, или для сообщений, соответствующих аргументу msg_id.Are the parameters used in the substitution for variables defined in msg_str or the message corresponding to msg_id. Число параметров подстановки может быть от 0 и более, при этом общее количество параметров подстановки не может превышать 20.There can be 0 or more substitution parameters, but the total number of substitution parameters cannot exceed 20. Каждый параметр подстановки может быть локальной переменной или любым из этих типов данных: tinyint, smallint, int, char, varchar, nchar, nvarchar, binary или varbinary.Each substitution parameter can be a local variable or any of these data types: tinyint, smallint, int, char, varchar, nchar, nvarchar, binary, or varbinary. Другие типы данных не поддерживаются.No other data types are supported.

Параметрoption
Настраиваемый параметр для ошибки может принимать одно из значений, находящихся в следующей таблице.Is a custom option for the error and can be one of the values in the following table.

ЗначениеValue DescriptionDescription
LOGLOG Записывает сообщения об ошибках в журнал ошибок и журнал приложения экземпляра компонента MicrosoftMicrosoft SQL ServerSQL Server Компонент Database EngineDatabase Engine.Logs the error in the error log and the application log for the instance of the MicrosoftMicrosoft SQL ServerSQL Server Компонент Database EngineDatabase Engine. Сообщения об ошибках в журнале ошибок ограничены размером в 440 байт.Errors logged in the error log are currently limited to a maximum of 440 bytes. Только члены предопределенной роли сервера sysadmin или пользователи с разрешениями ALTER TRACE могут указывать ключевое слово WITH LOG.Only a member of the sysadmin fixed server role or a user with ALTER TRACE permissions can specify WITH LOG.

Область применения:Applies to: SQL ServerSQL Server, База данных SQLSQL Database SQL ServerSQL Server, База данных SQLSQL Database
NOWAITNOWAIT Немедленно посылает сообщения клиенту.Sends messages immediately to the client.

Область применения:Applies to: SQL ServerSQL Server, База данных SQLSQL Database SQL ServerSQL Server, База данных SQLSQL Database
SETERRORSETERROR Устанавливает значения параметров @@ERROR и ERROR_NUMBER равными msg_id или 50000, независимо от уровня серьезности.Sets the @@ERROR and ERROR_NUMBER values to msg_id or 50000, regardless of the severity level.

Область применения:Applies to: SQL ServerSQL Server, База данных SQLSQL Database SQL ServerSQL Server, База данных SQLSQL Database

RemarksRemarks

Ошибки, созданные инструкцией RAISERROR, аналогичны ошибкам, созданным кодом компонента Компонент Database EngineDatabase Engine.The errors generated by RAISERROR operate the same as errors generated by the Компонент Database EngineDatabase Engine code. Значения, указанные в инструкции RAISERROR, выводятся системными функциями ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE и @@ERROR.The values specified by RAISERROR are reported by the ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE, and @@ERROR system functions. Если инструкция RAISERROR с уровнем серьезности 11 или выше выполняется в блоке TRY, управление передается соответствующему блоку CATCH.When RAISERROR is run with a severity of 11 or higher in a TRY block, it transfers control to the associated CATCH block. Ошибка возвращается вызывающему объекту, если инструкция RAISERROR вызывается:The error is returned to the caller if RAISERROR is run:

  • за пределами области любого блока TRY;Outside the scope of any TRY block.

  • с уровнем серьезности, равным 10 и менее в блоке TRY;With a severity of 10 or lower in a TRY block.

  • с уровнем серьезности, равным 20 и выше, что приводит к обрыву подключения к базе данных.With a severity of 20 or higher that terminates the database connection.

    В блоках CATCH инструкция RAISERROR может использоваться для передачи сообщения об ошибке, вызывающего блок CATCH, во время получения исходных сведений об ошибке при помощи таких системных функций, как ERROR_NUMBER и ERROR_MESSAGE.CATCH blocks can use RAISERROR to rethrow the error that invoked the CATCH block by using system functions such as ERROR_NUMBER and ERROR_MESSAGE to retrieve the original error information. По умолчанию для сообщений с серьезностью от 1 до 10 параметр @@ERROR устанавливается в значение 0.@@ERROR is set to 0 by default for messages with a severity from 1 through 10.

    Если при помощи аргумента msg_id задано пользовательское сообщение, доступное в представлении каталога sys.messages, инструкция RAISERROR обрабатывает сообщение из текстового столбца при помощи тех же правил, которые применялись к тексту пользовательского сообщения, заданного аргументом msg_str.When msg_id specifies a user-defined message available from the sys.messages catalog view, RAISERROR processes the message from the text column using the same rules as are applied to the text of a user-defined message specified using msg_str. Текст пользовательского сообщения может содержать спецификации преобразования, а инструкция RAISERROR сопоставит значения аргументов данным спецификациям преобразования.The user-defined message text can contain conversion specifications, and RAISERROR will map argument values into the conversion specifications. Используйте процедуру sp_addmessage для добавления пользовательских сообщений об ошибках и процедуру sp_dropmessage для удаления пользовательских сообщений об ошибках.Use sp_addmessage to add user-defined error messages and sp_dropmessage to delete user-defined error messages.

    Инструкция RAISERROR может использоваться в качестве альтернативы инструкции PRINT для возвращения сообщений вызывающим приложениям.RAISERROR can be used as an alternative to PRINT to return messages to calling applications. Инструкция RAISERROR поддерживает функцию подстановки символов, сходную с функцией printf стандартной библиотеки языка С, которая отличается от инструкции PRINT Transact-SQLTransact-SQL.RAISERROR supports character substitution similar to the functionality of the printf function in the C standard library, while the Transact-SQLTransact-SQL PRINT statement does not. Инструкция PRINT не зависит от блоков TRY, в то время как инструкция RAISERROR, выполняемая с уровнем серьезности от 11 до 19 в блоке TRY, передает управление процессом соответствующему блоку CATCH.The PRINT statement is not affected by TRY blocks, while a RAISERROR run with a severity of 11 to 19 in a TRY block transfers control to the associated CATCH block. Задайте уровень серьезности, равный 10 или меньше, чтобы инструкция RAISERROR возвращала сообщения из блока TRY без вызова блока CATCH.Specify a severity of 10 or lower to use RAISERROR to return a message from a TRY block without invoking the CATCH block.

    Обычно последовательные аргументы заменяют последовательные спецификации преобразования; первый аргумент заменяет первую спецификацию преобразования, второй аргумент заменяет вторую спецификацию преобразования и так далее.Typically, successive arguments replace successive conversion specifications; the first argument replaces the first conversion specification, the second argument replaces the second conversion specification, and so on. Например, в следующей инструкции RAISERROR первый аргумент N'number' подставляется на место первой спецификации преобразования %s, а второй аргумент 5 — на место второй спецификации преобразования %d..For example, in the following RAISERROR statement, the first argument of N'number' replaces the first conversion specification of %s; and the second argument of 5 replaces the second conversion specification of %d.

RAISERROR (N'This is message %s %d.', -- Message text.  
           10, -- Severity,  
           1, -- State,  
           N'number', -- First argument.  
           5); -- Second argument.  
-- The message text returned is: This is message number 5.  
GO  

Если в качестве ширины или точности спецификации преобразования задан символ «звездочка» (*), то используемое для ширины или для точности значение определяется как значение аргумента целого типа.If an asterisk (*) is specified for either the width or precision of a conversion specification, the value to be used for the width or precision is specified as an integer argument value. В этом случае одна спецификация преобразования может использоваться до трех аргументов — для значений ширины, точности и подстановки.In this case, one conversion specification can use up to three arguments, one each for the width, precision, and substitution value.

Например, каждая из следующих инструкций RAISERROR возвращает одну и ту же строку.For example, both of the following RAISERROR statements return the same string. Одна определяет значения ширины и точности в списке аргументов, другая определяет их в спецификации преобразования.One specifies the width and precision values in the argument list; the other specifies them in the conversion specification.

RAISERROR (N'<\<%*.*s>>', -- Message text.  
           10, -- Severity,  
           1, -- State,  
           7, -- First argument used for width.  
           3, -- Second argument used for precision.  
           N'abcde'); -- Third argument supplies the string.  
-- The message text returned is: <<    abc>>.  
GO  
RAISERROR (N'<\<%7.3s>>', -- Message text.  
           10, -- Severity,  
           1, -- State,  
           N'abcde'); -- First argument supplies the string.  
-- The message text returned is: <<    abc>>.  
GO  

ПримерыExamples

A.A. Возвращение сведений об ошибке из блока CATCHReturning error information from a CATCH block

Следующий пример кода показывает, как можно использовать инструкцию RAISERROR внутри блока TRY, чтобы передать управление блоку CATCH.The following code example shows how to use RAISERROR inside a TRY block to cause execution to jump to the associated CATCH block. Также в этом примере показано, каким образом для возвращения сведений об ошибке используется инструкция RAISERROR, которая вызывает блок CATCH.It also shows how to use RAISERROR to return information about the error that invoked the CATCH block.

Примечание

Инструкция RAISERROR может формировать только ошибки с состоянием от 1 до 127 включительно.RAISERROR only generates errors with state from 1 through 127. Так как компонент Компонент Database EngineDatabase Engine может вызывать ошибки с состоянием 0, рекомендуется проверять состояние ошибки, возвращаемое функцией ERROR_STATE, перед передачей его по значению в виде параметра состояния для инструкции RAISERROR.Because the Компонент Database EngineDatabase Engine may raise errors with state 0, we recommend that you check the error state returned by ERROR_STATE before passing it as a value to the state parameter of RAISERROR.

BEGIN TRY  
    -- RAISERROR with severity 11-19 will cause execution to   
    -- jump to the CATCH block.  
    RAISERROR ('Error raised in TRY block.', -- Message text.  
               16, -- Severity.  
               1 -- State.  
               );  
END TRY  
BEGIN CATCH  
    DECLARE @ErrorMessage NVARCHAR(4000);  
    DECLARE @ErrorSeverity INT;  
    DECLARE @ErrorState INT;  

    SELECT   
        @ErrorMessage = ERROR_MESSAGE(),  
        @ErrorSeverity = ERROR_SEVERITY(),  
        @ErrorState = ERROR_STATE();  

    -- Use RAISERROR inside the CATCH block to return error  
    -- information about the original error that caused  
    -- execution to jump to the CATCH block.  
    RAISERROR (@ErrorMessage, -- Message text.  
               @ErrorSeverity, -- Severity.  
               @ErrorState -- State.  
               );  
END CATCH;  

Б.B. Создание нерегламентированного сообщения в представлении каталога sys.messagesCreating an ad hoc message in sys.messages

В следующем примере показано, как инициировать сообщение, хранящееся в представлении каталога sys.messages.The following example shows how to raise a message stored in the sys.messages catalog view. Это сообщение было добавлено в представление каталога sys.messages при помощи системной хранимой процедуры sp_addmessage как сообщение с номером 50005.The message was added to the sys.messages catalog view by using the sp_addmessage system stored procedure as message number 50005.

sp_addmessage @msgnum = 50005,  
              @severity = 10,  
              @msgtext = N'<\<%7.3s>>';  
GO  
RAISERROR (50005, -- Message id.  
           10, -- Severity,  
           1, -- State,  
           N'abcde'); -- First argument supplies the string.  
-- The message text returned is: <<    abc>>.  
GO  
sp_dropmessage @msgnum = 50005;  
GO  

В.C. Использование локальной переменной для предоставления текста сообщенияUsing a local variable to supply the message text

В следующем примере кода показано, как использовать локальную переменную для предоставления текста сообщения для инструкции RAISERROR.The following code example shows how to use a local variable to supply the message text for a RAISERROR statement.

DECLARE @StringVariable NVARCHAR(50);  
SET @StringVariable = N'<\<%7.3s>>';  

RAISERROR (@StringVariable, -- Message text.  
           10, -- Severity,  
           1, -- State,  
           N'abcde'); -- First argument supplies the string.  
-- The message text returned is: <<    abc>>.  
GO  

См. также:See Also

Встроенные функции (Transact-SQL) Built-in Functions (Transact-SQL)
DECLARE @local_variable (Transact-SQL) DECLARE @local_variable (Transact-SQL)
PRINT (Transact-SQL) PRINT (Transact-SQL)
sp_addmessage (Transact-SQL) sp_addmessage (Transact-SQL)
sp_dropmessage (Transact-SQL) sp_dropmessage (Transact-SQL)
sys.messages (Transact-SQL) sys.messages (Transact-SQL)
xp_logevent (Transact-SQL) xp_logevent (Transact-SQL)
@@ERROR (Transact-SQL) @@ERROR (Transact-SQL)
ERROR_LINE (Transact-SQL) ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL) ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL) ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL) ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL) ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL) ERROR_STATE (Transact-SQL)
TRY...CATCH (Transact-SQL)TRY...CATCH (Transact-SQL)