sp_dropmessage (Transact-SQL)
从 SQL Server 数据库引擎实例中删除指定的用户定义的错误消息。 可以使用 sys.messages 目录视图查看用户定义的消息。
语法
sp_dropmessage [ @msgnum = ] message_number
[ , [ @lang = ] 'language' ]
参数
[ @msgnum = ] message_number
要删除的消息号。 message_number 必须是一个消息号大于 50000 的用户定义的消息。 message_number 的数据类型为 int,默认值为 NULL。[ @lang = ] 'language'
要删除的消息语言。 如果指定 all,则删除 message_number 的所有语言版本。 language 的数据类型为 sysname,默认值为 NULL。
返回代码值
0(成功)或 1(失败)
结果集
无。
权限
要求具有 sysadmin 和 serveradmin 固定服务器角色的成员身份。
注释
如果对于 language 未指定 all,则必须先删除消息的所有本地化版本, 才能删除消息的美国英语版本。
示例
A.删除用户定义的消息
以下示例将从 sys.messages 中删除编号为 50001 的用户定义的消息。
USE master;
GO
EXEC sp_dropmessage 50001;
B.删除包含本地化版本的用户定义的消息
以下示例将删除编号为 60000 的用户定义的消息(包括该消息的本地化版本)。
USE master;
GO
-- Create a user-defined message in U.S. English
EXEC sp_addmessage
@msgnum = 60000,
@severity = 16,
@msgtext = N'The item named %s already exists in %s.',
@lang = 'us_english';
-- Create a localized version of the same message.
EXEC sp_addmessage
@msgnum = 60000,
@severity = 16,
@msgtext = N'L''élément nommé %1! existe déjà dans %2!',
@lang = 'French';
GO
-- This statement will fail as long as the localized version
-- of the message exists.
EXEC sp_dropmessage 60000;
GO
-- This statement will drop the message.
EXEC sp_dropmessage
@msgnum = 60000,
@lang = 'all';
GO
C.删除用户定义消息的本地化版本
以下示例将删除编号为 60000 的用户定义消息的本地化版本,但并不删除整个消息。
USE master;
GO
-- Create a user-defined message in U.S. English
EXEC sp_addmessage
@msgnum = 60000,
@severity = 16,
@msgtext = N'The item named %s already exists in %s.',
@lang = 'us_english';
-- Create a localized version of the same message.
EXEC sp_addmessage
@msgnum = 60000,
@severity = 16,
@msgtext = N'L''élément nommé %1! existe déjà dans %2!',
@lang = 'French';
GO
-- This statement will remove only the localized version of the
-- message.
EXEC sp_dropmessage
@msgnum = 60000,
@lang = 'French';
GO