sp_addmessage(Transact-SQL)sp_addmessage (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

새 사용자 정의 오류 메시지를 SQL Server 데이터베이스 엔진SQL Server Database Engine 인스턴스에 저장합니다.Stores a new user-defined error message in an instance of the SQL Server 데이터베이스 엔진SQL Server Database Engine. 사용 하 여 저장 된 메시지 sp_addmessage 를 사용 하 여 볼 수는 sys.messages 카탈로그 뷰.Messages stored by using sp_addmessage can be viewed by using the sys.messages catalog view.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax


sp_addmessage [ @msgnum= ] msg_id , [ @severity= ] severity , [ @msgtext= ] 'msg'   
     [ , [ @lang= ] 'language' ]   
     [ , [ @with_log= ] { 'TRUE' | 'FALSE' } ]   
     [ , [ @replace= ] 'replace' ]   

인수Arguments

[ @msgnum* * * = ] msg_id[ @msgnum= ] msg_id
메시지 ID입니다.Is the ID of the message. msg_idint 기본값은 NULL입니다.msg_id is int with a default of NULL. msg_id 사용자 정의 오류에 대 한 메시지 50,001 2,147,483,647 사이의 정수일 수 있습니다.msg_id for user-defined error messages can be an integer between 50,001 and 2,147,483,647. 조합의 msg_id언어 고유; 지정 된 언어 ID가 이미 존재 하는 경우 오류가 반환 됩니다.The combination of msg_id and language must be unique; an error is returned if the ID already exists for the specified language.

[ @severity = ]심각도[ @severity = ]severity
오류의 심각도입니다.Is the severity level of the error. 심각도smallint 기본값은 NULL입니다.severity is smallint with a default of NULL. 유효한 수준은 0에서 25까지입니다.Valid levels are from 1 through 25. 심각도에 대한 자세한 내용은 데이터베이스 엔진 오류 심각도를 참조하세요.For more information about severities, see Database Engine Error Severities.

[ @msgtext = ] 'msg'[ @msgtext = ] 'msg'
오류 메시지의 텍스트입니다.Is the text of the error message. msgnvarchar (255) 기본값은 NULL입니다.msg is nvarchar(255) with a default of NULL.

[ @lang = ] '언어'[ @lang = ] 'language'
이 메시지의 언어입니다.Is the language for this message. 언어sysname 기본값은 NULL입니다.language is sysname with a default of NULL. 여러 언어를 동일한 서버에 설치할 수 있으므로 언어 각 메시지 작성 되는 언어를 지정 합니다.Because multiple languages can be installed on the same server, language specifies the language in which each message is written. 언어 은 생략 하면 언어는 기본 언어는 세션에 대 한 합니다.When language is omitted, the language is the default language for the session.

[ @with_log = ] { 'TRUE' | 'FALSE' }[ @with_log = ] { 'TRUE' | 'FALSE' }
오류가 발생할 때 Windows 응용 프로그램 로그에 기록할지 여부입니다.Is whether the message is to be written to the Windows application log when it occurs. @with_logvarchar(5) 기본값은 FALSE입니다.@with_log is varchar(5) with a default of FALSE. TRUE인 경우 오류가 항상 Windows 응용 프로그램 로그에 기록됩니다.If TRUE, the error is always written to the Windows application log. FALSE인 경우 오류가 항상 Windows 응용 프로그램 로그에 기록되지는 않으며 오류가 어떻게 발생했는지에 따라 달라집니다.If FALSE, the error is not always written to the Windows application log but can be written, depending on how the error was raised. 구성원만는 sysadmin 서버 역할이이 옵션을 사용할 수 있습니다.Only members of the sysadmin server role can use this option.

참고

Windows 응용 프로그램 로그에 메시지가 기록된 경우에는 데이터베이스 엔진Database Engine 오류 로그 파일에도 기록됩니다.If a message is written to the Windows application log, it is also written to the 데이터베이스 엔진Database Engine error log file.

[ @replace = ] '대체'[ @replace = ] 'replace'
문자열로 지정 된 경우 대체, 새 메시지 텍스트와 심각도 수준으로 기존 오류 메시지를 덮어씁니다.If specified as the string replace, an existing error message is overwritten with new message text and severity level. 대체varchar(7) 기본값은 NULL입니다.replace is varchar(7) with a default of NULL. 경우이 옵션을 지정 해야 msg_id 이미 있습니다.This option must be specified if msg_id already exists. 영어(미국)로 작성된 메시지 심각도 수준이 동일한 다른 모든 언어의 모든 메시지에 대 한 대체 됩니다 msg_id합니다.If you replace a U.S. English message, the severity level is replaced for all messages in all other languages that have the same msg_id.

반환 코드 값Return Code Values

0(성공) 또는 1(실패)0 (success) or 1 (failure)

결과 집합Result Sets

없음None

주의Remarks

영어 버전이 아닌 SQL ServerSQL Server의 경우 경우 영어(미국) 버전의 메시지가 이미 존재하고 있어야 다른 언어를 사용하여 메시지를 추가할 수 있습니다.For non-English versions of SQL ServerSQL Server, the U.S. English version of a message must already exist before the message can be added using another language. 두 버전의 메시지에 대한 심각도는 일치해야 합니다.The severity of the two versions of the message must match.

매개 변수를 포함한 메시지를 지역화하는 경우에는 원래 메시지의 매개 변수와 일치하는 매개 변수 번호를 사용하십시오.When localizing messages that contain parameters, use parameter numbers that correspond to the parameters in the original message. 각 매개 변수 번호 뒤에는 느낌표(!)를 삽입하십시오.Insert an exclamation point (!) after each parameter number.

원래 메시지Original message 지역화된 메시지Localized message
' 원래 메시지 param 1: %s'Original message param 1: %s,

param 2: %d 'param 2: %d'
' 지역화 된 메시지 param 1: %1!,'Localized message param 1: %1!,

param 2: %2!'param 2: %2!'

언어 구문이 다르므로 지역화된 메시지의 매개 변수 번호 순서가 원래 메시지의 경우와 다를 수 있습니다.Because of language syntax differences, the parameter numbers in the localized message may not occur in the same sequence as in the original message.

PermissionsPermissions

멤버 자격이 필요는 sysadmin 또는 serveradmin 고정 서버 역할입니다.Requires membership in the sysadmin or serveradmin fixed server roles.

Examples

1.A. 사용자 지정 메시지 정의Defining a custom message

다음 예제에서는 추가 사용자 지정 메시지를 sys.messages합니다.The following example adds a custom message to sys.messages.

USE master;  
GO  
EXEC sp_addmessage 50001, 16,   
   N'Percentage expects a value between 20 and 100.   
   Please reexecute with a more appropriate value.';  
GO  

2.B. 두 언어로 작성된 메시지 추가Adding a message in two languages

다음 예에서는 영어(미국)로 된 메시지를 먼저 추가한 다음 동일한 메시지를 프랑스어로 추가합니다.The following example first adds a message in U.S. English and then adds the same message in French.

USE master;  
GO  
EXEC sp_addmessage @msgnum = 60000, @severity = 16,   
   @msgtext = N'The item named %s already exists in %s.',   
   @lang = 'us_english';  

EXEC sp_addmessage @msgnum = 60000, @severity = 16,   
   @msgtext = N'L''élément nommé %1! existe déjà dans %2!',   
   @lang = 'French';  
GO  

3.C. 매개 변수 순서 변경Changing the order of parameters

다음 예에서는 영어(미국)로 된 메시지를 먼저 추가한 다음 매개 변수 순서를 변경하여 해당 지역 언어로 된 메시지를 추가합니다.The following example first adds a message in U.S. English, and then adds a localized message in which the parameter order is changed.

USE master;  
GO  

EXEC sp_addmessage   
    @msgnum = 60000,   
    @severity = 16,  
    @msgtext =   
        N'This is a test message with one numeric  
        parameter (%d), one string parameter (%s),   
        and another string parameter (%s).',  
    @lang = 'us_english';  

EXEC sp_addmessage   
    @msgnum = 60000,   
    @severity = 16,  
    @msgtext =   
        -- In the localized version of the message,  
        -- the parameter order has changed. The   
        -- string parameters are first and second  
        -- place in the message, and the numeric   
        -- parameter is third place.  
        N'Dies ist eine Testmeldung mit einem   
        Zeichenfolgenparameter (%3!),  
        einem weiteren Zeichenfolgenparameter (%2!),   
        und einem numerischen Parameter (%1!).',  
    @lang = 'German';  
GO    

-- Changing the session language to use the U.S. English  
-- version of the error message.  
SET LANGUAGE us_english;  
GO  

RAISERROR(60000,1,1,15,'param1','param2') -- error, severity, state,  
GO                                       -- parameters.  

-- Changing the session language to use the German  
-- version of the error message.  
SET LANGUAGE German;  
GO  

RAISERROR(60000,1,1,15,'param1','param2'); -- error, severity, state,   
GO                                       -- parameters.  

관련 항목:See Also

RAISERROR(Transact-SQL) RAISERROR (Transact-SQL)
sp_altermessage ( Transact SQL ) sp_altermessage (Transact-SQL)
sp_dropmessage ( Transact SQL ) sp_dropmessage (Transact-SQL)
시스템 저장 프로시저(Transact-SQL)System Stored Procedures (Transact-SQL)