sp_altermessage (Transact-SQL)

适用范围:SQL Server

更改 SQL Server 实例中用户定义的或系统消息的状态数据库引擎。 可以使用目录视图查看 sys.messages 用户定义的消息。

Transact-SQL 语法约定

语法

sp_altermessage
    [ @message_id = ] message_id
    , [ @parameter = ] N'parameter'
    , [ @parameter_value = ] 'parameter_value'
[ ; ]

参数

[ @message_id = ] message_id

要更改 sys.messages的消息的误差号。 @message_id为 int,无默认值。

[ @parameter = ] N'parameter'

与@parameter_value一起使用,指示消息要写入 Windows 应用程序日志。 @parameter为 sysname,无默认值。

@parameter 必须设置为 WITH_LOGNULL。 如果@parameter设置为WITH_LOGNULL@parameter_value的值true,则消息将写入 Windows 应用程序日志。 如果@parameter设置为WITH_LOGNULL@parameter_value的值false则消息并不总是写入 Windows 应用程序日志,但可能会根据错误引发方式进行写入。

如果将消息写入 Windows 应用程序日志,则它还会写入数据库引擎错误日志文件。

如果 指定了@parameter还必须指定@parameter_value

[ @parameter_value = ] 'parameter_value'

与@parameter一起使用,指示错误将写入 Windows 应用程序日志。 @parameter_value为 varchar(5),没有默认值。

  • 如果 true始终将错误写入 Windows 应用程序日志。
  • 如果 false,错误并不总是写入 Windows 应用程序日志,但可能会写入,具体取决于错误是如何引发的。

如果 指定了@parameter_value还必须指定@parameter

返回代码值

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

结果集

无。

注解

使用WITH_LOG选项的效果与RAISERROR WITH LOG参数的效果sp_altermessage类似,只是更改sp_altermessage现有消息的日志记录行为。 如果消息已 WITH_LOG更改,则无论用户如何调用错误,它始终会写入 Windows 应用程序日志。 即使 RAISERRORWITH_LOG 执行该选项,也会将错误写入 Windows 应用程序日志。

可以使用 修改 sp_altermessage系统消息。

权限

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

示例

以下示例将现有消息 55001 写入 Windows 应用程序日志。

EXEC sp_altermessage 55001, 'WITH_LOG', 'true';
GO