sp_dropmessage (Transact-SQL)

适用范围:SQL Server

从 SQL Server 数据库引擎实例中删除指定的用户定义错误消息。 可以使用目录视图查看 sys.messages 用户定义的消息。

Transact-SQL 语法约定

语法

sp_dropmessage
    [ [ @msgnum = ] msgnum ]
    [ , [ @lang = ] N'lang' ]
[ ; ]

参数

[ @msgnum = ] msgnum

要删除的消息编号。 @msgnum为 int,默认值为 NULL. @msgnum 必须是大于 (50,000) 的消息编号 50000 的用户定义消息。

[ @lang = ] N'lang'

要删除的消息的语言。 @lang为 sysname,默认值为 NULL. 如果all已指定,则会删除@msgnum的所有语言版本

返回代码值

0(成功)或 1(失败)。

结果集

无。

权限

需要 sysadmin 和 serveradmin 固定服务器角色的成员身份。

注解

除非 all@lang指定,否则必须先删除邮件的所有本地化版本,然后才能删除该邮件的美国英语版本。

示例

A. 删除用户定义的消息

以下示例从中删除用户定义的消息、数字50001sys.messages

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