Transact-SQL 参考

sp_addmessage

将新的错误信息添加到 sysmessages 表。

语法

sp_addmessage [ @msgnum =] msg_id ,
    
[ @severity = ] severity ,
    
[ @msgtext = ] 'msg'
    [ , [ @lang = ] 'language' ]
    [ , [ @with_log = ] 'with_log' ]
    [ , [ @replace = ] 'replace' ]

参数

[@msgnum =] msg_id

消息的 ID。msg_id 的数据类型为 int,默认设置为 NULL。用户定义错误信息的可接受值从 50001 开始。msg_idlanguage 的组合必须是唯一的;如果特定语言的 ID 已经存在,则返回一个错误。

[@severity =] severity

错误的严重级别。severity 的数据类型为 smallint,默认设置为 NULL。有效级别为 1 到 25。只有系统管理员可以使用从 19 到 25 之间的严重级别添加消息。

[@msgtext =] 'msg'

错误信息的文本。msg 的数据类型为 nvarchar(255),默认设置为 NULL。

[@lang =] 'language'

该消息的语言。language 的数据类型为 sysname,默认设置为 NULL。因为同一服务器上可以安装多种语言,所以 language 将指定写每条消息所用的语言。省略 language 时,语言是会话的默认语言。

[@with_log =] 'with_log'

当发生消息时是否将消息写入 Microsoft® Windows NT® 应用程序日志中。with_log 的数据类型为 varchar(5),默认设置为 FALSE。如果为 true,则错误总是写入 Windows NT 应用程序日志。如果为 false,则错误并不是每次都写入应用程序日志,但可以写入 Windows NT  应用程序日志,这取决于错误是如何产生的。只有 sysadmin 服务器角色的成员才能使用该选项。

说明  如果消息写入了 Windows NT 应用程序日志,它也将被写入 Microsoft SQL Server™ 错误日志文件。

[@replace =] 'replace'

如果指定为字符串 REPLACE,则新消息文本和严重级别将重写现有的错误信息。replace 的数据类型为 varchar(7),默认设置为 NULL。如果 msg_id 已经存在,则必须指定该选项。如果要替换美国英语的消息,则所有具有相同 msg_id 的其它语言的所有消息严重级别都将被替换。

返回代码值

0(成功)或 1(失败)

结果集

注释

对于本地化,在能够以其它语言添加消息之前,消息的美国英语版本必须已经存在。消息的严重度必须匹配。

当本地化包含参数的消息时,使用与原始消息中的参数相应的参数个数。在每个参数个数后都插入感叹号 (!)。

原始消息 本地化的消息
'Original message param 1:%s,

param 2:%d'

"本地化的消息参数 1: %1!,

参数 2: %2!'


由于语言语法不同,所以本地化消息中的参数个数可能不会以原始消息中相同的序列出现。

权限

只有 sysadminserveradmin 固定服务器角色成员才能执行该存储过程。

示例
A. 定义自定义的消息

此示例将自定义的消息添加到 sysmessages

USE master
EXEC sp_addmessage 50001, 16, 
   N'Percentage expects a value between 20 and 100. 
   Please reexecute with a more appropriate value.'
B. 用两种语言添加消息

此示例首先用美国英语添加一条消息,然后用法语添加相同的消息。

USE master
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'

请参见

错误信息严重级别

RAISERROR

sp_altermessage

sp_dropmessage

系统存储过程