xp_logevent (Transact-SQL)

将用户定义的消息记录到 SQL Server 日志文件和 Windows 事件查看器中。可以使用 xp_logevent 发送警报,而不向客户端发送消息。

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

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

语法

xp_logevent { error_number , 'message' } [ , 'severity' ]

参数

  • error_number
    用户定义错误号,该值大于 50,000。 最大值为 2147483647 (2^31 - 1)。

  • ' message '
    最多 2048 个字符的字符串。

  • ' severity '
    以下三个字符串之一:INFORMATIONAL、WARNING 或 ERROR。 severity 是可选的,默认值为 INFORMATIONAL。

返回代码值

0(成功)或 1(失败)

结果集

对于包含的代码示例,xp_logevent 返回下列错误消息:

The command(s) completed successfully.

注释

在发送来自 Transact-SQL 过程、触发器、批处理等的消息时,请使用 RAISERROR 语句而不是 xp_logevent。 xp_logevent 不调用客户端的消息处理程序,也不设置 @@ERROR。 若要将消息写入 Windows 事件查看器以及 SQL Server 实例的 SQL Server 错误日志文件中,请执行 RAISERROR 语句。

权限

要求具有 master 数据库中的 db_owner 固定数据库角色的成员身份或 sysadmin 固定服务器角色的成员身份。

示例

以下示例将消息以及传递给消息的变量记录到 Windows 事件查看器中。

DECLARE @@TABNAME varchar(30, @@USERNAME varchar(30),DECLARE @@MESSAGE varchar(255);
SET @@TABNAME = 'customers';
SET @@USERNAME = USER_NAME();
SELECT @@MESSAGE = 'The table ' + @@TABNAME + ' is not owned by the user 
   ' + @@USERNAME + '.';

USE master;
EXEC xp_logevent 60000, @@MESSAGE, informational;

请参阅

参考

PRINT (Transact-SQL)

RAISERROR (Transact-SQL)

系统存储过程 (Transact-SQL)

常规扩展存储过程 (Transact-SQL)