sp_altermessage (Transact-SQL)

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

适用范围:SQL Server(SQL Server 2008 到当前版本)。

主题链接图标 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 应用程序日志中。

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

请参阅

参考

RAISERROR (Transact-SQL)

sp_addmessage (Transact-SQL)

sp_dropmessage (Transact-SQL)

系统存储过程 (Transact-SQL)