sp_altermessage (Transact-SQL)
更改 SQL Server 数据库引擎实例中用户定义消息或系统消息的状态。可以使用 sys.messages 目录视图查看消息。
语法
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