1、Visual Basic(Declaration) C#C+J#JScript使用sp_addmessage添加自定义消息将新的用户定义错误消息存储在 SQL Server Database Engine实例中。使用 sp_addmessage 存储的消息可以使用 sys.messages 目录视图进行查看。语法sp_addmessage msgnum = msg_id , severity = severity , msgtext = msg , lang = language , with_log = with_log , replace = replace 备注对于非英语版本的 SQL
2、Server,必须已经存在美国英语版本的消息,然后才能使用另一种语言添加消息。两种消息版本的严重性必须匹配。 当本地化包含参数的消息时,使用与原始消息中的参数相应的参数。在每个参数后都插入感叹号 (!)。 原始消息 本地化的消息 Original message param 1: %s, param 2: %d Localized message param 1: %1!, param 2: %2!由于语言语法不同,因此,本地化消息中的参数可能不会以原始消息中相同的顺序出现。参数 msgnum = msg_id消息的 ID。msg_id 的数据类型为 int,默认值为 NULL。用户定义错误消
3、息的 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,默认
4、值为 NULL。由于可以在同一个服务器上安装多种语言,因此,language 指定编写每个消息时所用的语言。如果省略 language,则会话语言为默认语言。 with_log = TRUE | FALSE 是否在消息发生时将其写入 Windows 应用程序日志。with_log 的数据类型为 varchar(5),默认值为 FALSE。如果为 TRUE,则错误始终写入 Windows 应用程序日志。如果为 FALSE,则错误不会始终写入 Windows 应用程序日志,但仍然可以写入,具体取决于错误是如何引发的。只有 sysadmin 服务器角色的成员才能使用该选项。注意: 如果消息写入了 W
5、indows 应用程序日志,那么它也将被写入数据库引擎错误日志文件。 replace = replace如果指定为字符串 replace,则会以新的消息正文和严重级别覆盖现有错误消息。replace 为 varchar(7),默认值为 NULL。如果 msg_id 已经存在,则必须指定该选项。如果替换了美国英语消息,则会以具有相同 msg_id 的所有其他语言替换所有消息的严重级别。返回代码值0(成功)或 1(失败)结果集无权限要求具有 sysadmin 和 serveradmin 固定服务器角色的成员身份。示例A. 定义自定义的消息以下示例将自定义的消息添加到 sys.messages。 复
6、制代码USE masterGOEXEC sp_addmessage 50001, 16, NPercentage expects a value between 20 and 100. Please reexecute with a more appropriate value.;GOB. 用两种语言添加消息以下示例首先用美国英语添加一条消息,然后用法语添加相同的消息。复制代码USE master;GOEXEC sp_addmessage msgnum = 60000, severity = 16, msgtext = NThe item named %s already exists in
7、%s., lang = us_english;EXEC sp_addmessage msgnum = 60000, severity = 16, msgtext = NLlment nomm?%1! existe dj?dans %2!, lang = French;GOC. 更改参数顺序以下示例首先添加美国英语的消息,然后添加更改了其参数顺序的本地化消息。 复制代码USEmaster;GOEXEC sp_addmessage msgnum = 60000, severity = 16, msgtext = NThis is a test message with one numeric pa
8、rameter (%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
9、, and the numeric - parameter is third place. NDies 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;GORAISERROR(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;GORAISERROR(60000,1,1,15,param1,param2) - error, severity, state, GO - parameters.