將新的錯(cuò)誤信息添加到 sysmessages 表。
sp_addmessage [ @msgnum =] msg_id ,
[ @severity = ] severity ,
[ @msgtext = ] 'msg'
[ , [ @lang = ] 'language' ]
[ , [ @with_log = ] 'with_log' ]
[ , [ @replace = ] 'replace' ]
[@msgnum =] msg_id
消息的 ID。msg_id 的數(shù)據(jù)類型為 int,默認(rèn)設(shè)置為 NULL。用戶定義錯(cuò)誤信息的可接受值從 50001 開始。msg_id 和 language 的組合必須是唯一的;如果特定語言的 ID 已經(jīng)存在,則返回一個(gè)錯(cuò)誤。
[@severity =] severity
錯(cuò)誤的嚴(yán)重級(jí)別。severity 的數(shù)據(jù)類型為 smallint,默認(rèn)設(shè)置為 NULL。有效級(jí)別為 1 到 25。只有系統(tǒng)管理員可以使用從 19 到 25 之間的嚴(yán)重級(jí)別添加消息。
[@msgtext =] 'msg'
錯(cuò)誤信息的文本。msg 的數(shù)據(jù)類型為 nvarchar(255),默認(rèn)設(shè)置為 NULL。
[@lang =] 'language'
該消息的語言。language 的數(shù)據(jù)類型為 sysname,默認(rèn)設(shè)置為 NULL。因?yàn)橥环?wù)器上可以安裝多種語言,所以 language 將指定寫每條消息所用的語言。省略 language 時(shí),語言是會(huì)話的默認(rèn)語言。
[@with_log =] 'with_log'
當(dāng)發(fā)生消息時(shí)是否將消息寫入 Microsoft® Windows NT® 應(yīng)用程序日志中。with_log 的數(shù)據(jù)類型為 varchar(5),默認(rèn)設(shè)置為 FALSE。如果為 true,則錯(cuò)誤總是寫入 Windows NT 應(yīng)用程序日志。如果為 false,則錯(cuò)誤并不是每次都寫入應(yīng)用程序日志,但可以寫入 Windows NT 應(yīng)用程序日志,這取決于錯(cuò)誤是如何產(chǎn)生的。只有 sysadmin 服務(wù)器角色的成員才能使用該選項(xiàng)。
說明 如果消息寫入了 Windows NT 應(yīng)用程序日志,它也將被寫入 Microsoft SQL Server™ 錯(cuò)誤日志文件。
[@replace =] 'replace'
如果指定為字符串 REPLACE,則新消息文本和嚴(yán)重級(jí)別將重寫現(xiàn)有的錯(cuò)誤信息。replace 的數(shù)據(jù)類型為 varchar(7),默認(rèn)設(shè)置為 NULL。如果 msg_id 已經(jīng)存在,則必須指定該選項(xiàng)。如果要替換美國英語的消息,則所有具有相同 msg_id 的其它語言的所有消息嚴(yán)重級(jí)別都將被替換。
0(成功)或 1(失?。?/P>
無
對(duì)于本地化,在能夠以其它語言添加消息之前,消息的美國英語版本必須已經(jīng)存在。消息的嚴(yán)重度必須匹配。
當(dāng)本地化包含參數(shù)的消息時(shí),使用與原始消息中的參數(shù)相應(yīng)的參數(shù)個(gè)數(shù)。在每個(gè)參數(shù)個(gè)數(shù)后都插入感嘆號(hào) (!)。
原始消息 | 本地化的消息 |
---|---|
'Original message param 1:%s, param 2:%d' | "本地化的消息參數(shù) 1: %1!, 參數(shù) 2: %2!' |
由于語言語法不同,所以本地化消息中的參數(shù)個(gè)數(shù)可能不會(huì)以原始消息中相同的序列出現(xiàn)。
只有 sysadmin 和 serveradmin 固定服務(wù)器角色成員才能執(zhí)行該存儲(chǔ)過程。
此示例將自定義的消息添加到 sysmessages。
USE master
EXEC sp_addmessage 50001, 16,
N'Percentage expects a value between 20 and 100.
Please reexecute with a more appropriate value.'
此示例首先用美國英語添加一條消息,然后用法語添加相同的消息。
相關(guān)文章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'