sp_dropmessage (Transact-SQL)

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

主题链接图标Transact-SQL 语法约定

语法

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(失败)

结果集

无。

权限

要求具有 sysadminserveradmin 固定服务器角色的成员身份。

注释

如果对于 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