sp_addmessage(Transact-SQL)
새 사용자 정의 오류 메시지를 SQL Server 데이터베이스 엔진 인스턴스에 저장합니다. sp_addmessage를 사용하여 저장한 메시지는 sys.messages 카탈로그 뷰를 사용하여 볼 수 있습니다.
구문
sp_addmessage [ @msgnum = ] msg_id , [ @severity = ] severity , [ @msgtext = ] 'msg'
[ , [ @lang = ] 'language' ]
[ , [ @with_log = ] { 'TRUE' | 'FALSE' } ]
[ , [ @replace = ] 'replace' ]
인수
- [ @msgnum****=** ] msg_id
메시지의 ID입니다. msg_id는 int이며 기본값은 NULL입니다. 사용자 정의 오류 메시지의 msg_id는 50,001에서 2,147,483,647 사이의 정수일 수 있습니다. msg_id와 language의 조합은 고유해야 하며 지정한 언어에 대해 ID가 이미 존재하는 경우 오류가 반환됩니다.
- [ @severity = ]severity
오류의 심각도입니다. severity는 smallint이며 기본값은 NULL입니다. 유효한 수준은 1에서 25까지입니다. 심각도에 대한 자세한 내용은 데이터베이스 엔진 오류 심각도를 참조하십시오.
- [ @msgtext = ] 'msg'
오류 메시지의 텍스트입니다. msg는 **nvarchar(255)**이며 기본값은 NULL입니다.
- [ @lang = ] 'language'
메시지에 사용할 언어입니다. language는 sysname이며 기본값은 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!' |
언어 구문이 다르므로 지역화된 메시지의 매개 변수 번호 순서가 원래 메시지의 경우와 다를 수 있습니다.
사용 권한
sysadmin 및 serveradmin 고정 서버 역할의 멤버 자격이 필요합니다.
예
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)