문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

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입니다. 유효한 수준은 0에서 25까지입니다. 심각도에 대한 자세한 내용은 데이터베이스 엔진 오류 심각도를 참조하십시오.

[ @msgtext = ] 'msg'

오류 메시지의 텍스트입니다. msgnvarchar(255)이며 기본값은 NULL입니다.

[ @lang = ] 'language'

이 메시지의 언어입니다. languagesysname이며 기본값은 NULL입니다. 한 서버에 여러 언어가 지원되므로 language는 각 메시지 작성에 사용된 언어를 지정합니다. language가 생략된 경우에는 해당 세션의 기본 언어가 사용됩니다.

[ @with_log = ] { 'TRUE' | 'FALSE' }

오류가 발생할 때 Windows 응용 프로그램 로그에 기록할지 여부입니다. @with_logvarchar(5)이며 기본값은 FALSE입니다. TRUE인 경우 오류가 항상 Windows 응용 프로그램 로그에 기록됩니다. FALSE인 경우 오류가 항상 Windows 응용 프로그램 로그에 기록되지는 않으며 오류가 어떻게 발생했는지에 따라 달라집니다. sysadmin 서버 역할의 멤버만 이 옵션을 사용할 수 있습니다.

참고 참고

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

[ @replace = ] 'replace'

replace 문자열로 지정된 경우 기존의 오류 메시지를 새 메시지 텍스트와 심각도로 덮어씁니다. replacevarchar(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''élément nommé %1! existe déjà 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.

커뮤니티 추가 항목

추가
표시: