다음을 통해 공유


sp_addmessage(Transact-SQL)

새 사용자 정의 오류 메시지를 SQL Server 데이터베이스 엔진 인스턴스에 저장합니다. sp_addmessage를 사용하여 저장한 메시지는 sys.messages 카탈로그 뷰를 사용하여 볼 수 있습니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

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

인수

  • [ @msgnum****=** ] msg_id
    메시지의 ID입니다. msg_idint이며 기본값은 NULL입니다. 사용자 정의 오류 메시지의 msg_id는 50,001에서 2,147,483,647 사이의 정수일 수 있습니다. msg_idlanguage의 조합은 고유해야 하며 지정한 언어에 대해 ID가 이미 존재하는 경우 오류가 반환됩니다.
  • [ @severity = ]severity
    오류의 심각도입니다. severitysmallint이며 기본값은 NULL입니다. 유효한 수준은 1에서 25까지입니다. 심각도에 대한 자세한 내용은 데이터베이스 엔진 오류 심각도를 참조하십시오.
  • [ @msgtext = ] 'msg'
    오류 메시지의 텍스트입니다. msg는 **nvarchar(255)**이며 기본값은 NULL입니다.
  • [ @lang = ] 'language'
    메시지에 사용할 언어입니다. languagesysname이며 기본값은 NULL입니다. 한 서버에 여러 언어가 지원되므로 language는 각 메시지 작성에 사용된 언어를 지정합니다. language가 생략된 경우에는 해당 세션의 기본 언어가 사용됩니다.
  • [ @with_log = ] { 'TRUE' | 'FALSE' }
    오류가 발생할 때 Windows 응용 프로그램 로그에 기록할지 여부입니다. @with_log는 **varchar(5)**이며 기본값은 FALSE입니다. TRUE인 경우 오류가 항상 Windows 응용 프로그램 로그에 기록됩니다. FALSE인 경우 오류가 항상 Windows 응용 프로그램 로그에 기록되지는 않으며 오류가 어떻게 발생했는지에 따라 달라집니다. sysadmin 서버 역할의 멤버만 이 옵션을 사용할 수 있습니다.

    [!참고] Windows 응용 프로그램 로그에 메시지가 기록된 경우에는 데이터베이스 엔진 오류 로그 파일에도 기록됩니다.

  • [ @replace = ] 'replace'
    replace 문자열로 지정된 경우 기존의 오류 메시지를 새 메시지 텍스트와 심각도로 덮어씁니다. replace는 **varchar(7)**이며 기본값은 NULL입니다. msg_id가 이미 존재하는 경우에는 반드시 이 옵션을 지정해야 합니다. 영어(미국)로 작성된 메시지를 대체한 경우에는 동일한 msg_id를 가진 다른 언어로 작성된 모든 메시지의 심각도가 대체됩니다.

반환 코드 값

0(성공) 또는 1(실패)

결과 집합

없음

주의

영어 버전이 아닌 SQL Server의 경우 영어(미국) 버전의 메시지가 이미 존재하고 있어야 다른 언어를 사용하여 메시지를 추가할 수 있습니다. 두 버전의 메시지에 대한 심각도는 일치해야 합니다.

매개 변수를 포함한 메시지를 지역화하는 경우에는 원래 메시지의 매개 변수와 일치하는 매개 변수 번호를 사용하십시오. 각 매개 변수 번호 뒤에는 느낌표(!)를 삽입하십시오.

원래 메시지 지역화된 메시지

'원래 메시지 param 1: %s,

param 2: %d’,

'지역화된 메시지 param 1: %1!,

param 2: %2!'

언어 구문이 다르므로 지역화된 메시지의 매개 변수 번호 순서가 원래 메시지의 경우와 다를 수 있습니다.

사용 권한

sysadminserveradmin 고정 서버 역할의 멤버 자격이 필요합니다.

1. 사용자 지정 메시지 정의

다음 예에서는 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. 두 언어로 작성된 메시지 추가

다음 예에서는 영어(미국)로 된 메시지를 먼저 추가한 다음 동일한 메시지를 프랑스어로 추가합니다.

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''??ent nomm?%1! existe d??dans %2!', 
   @lang = 'French';
GO

3. 매개 변수 순서 변경

다음 예에서는 영어(미국)로 된 메시지를 먼저 추가한 다음 매개 변수 순서를 변경하여 해당 지역 언어로 된 메시지를 추가합니다.

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.

참고 항목

참조

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

관련 자료

RAISERROR 사용

도움말 및 정보

SQL Server 2005 지원 받기