sp_altermessage (Transact-SQL)

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

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

语法

sp_altermessage [ @message_id = ] message_number   ,[ @parameter = ]'write_to_log'
      ,[ @parameter_value = ]'value' 

参数

  • [@message_id = ] message_number
    sys.messages 中更改的消息的错误号。message_number 的数据类型为 int,无默认值。

  • [ @parameter = ] **'**write_to_log'
    @parameter_value 一起使用,指示要将消息写入 Microsoft Windows 应用程序日志。write_to_log 的数据类型为 sysname,无默认值。write_to_log 必须设置为 WITH_LOG 或 NULL。如果 write_to_log 设置为 WITH_LOG 或 NULL,并且 @parameter_value 值为 true,则消息将写入 Windows 应用程序日志。如果 write_to_log 设置为 WITH_LOG 或 NULL,并且 @parameter_value 值为 false,则未必一定将消息写入 Windows 应用程序日志,而是根据错误产生的原因写入相应的地方。如果指定了 write_to_log,则也必须指定 @parameter_value 的值。

    注意注意

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

  • [ @parameter_value = ]**'**value'
    @parameter 一起使用,指示要将错误写入 Microsoft Windows 应用程序日志。value 的数据类型为 varchar(5),无默认值。如果为 true,则始终将错误写入 Windows 应用程序日志。如果为 false,则不一定将错误写入 Windows 应用程序日志,而是根据错误产生的方式写入。如果指定了 value,则也必须对 @parameter 指定 write_to_log。

返回代码值

0(成功)或 1(失败)

结果集

注释

包含 WITH_LOG 选项的 sp_altermessage 的作用和 RAISERROR WITH LOG 参数的作用相似,但是 sp_altermessage 会更改现有消息的记录行为。如果消息已更改为 WITH_LOG,则总是将其写入 Windows 应用程序日志,而不管这一错误是怎样造成的。即使执行 RAISERROR 时不含 WITH LOG 选项,也会将错误写入 Windows 应用程序日志。

不能使用 sp_altermessage 修改系统消息。

权限

需要 serveradmin 固定服务器角色成员资格。

示例

以下示例将使现有消息 55001 记录到 Windows 应用程序日志中。

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