xp_logevent (Transact-SQL)

适用于SQL Server

在 SQL Server 日志文件和 Windows 事件日志中记录用户定义的消息。 xp_logevent 可用于发送警报而不向客户端发送消息。

Transact-SQL 语法约定

语法

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

参数

error_number

大于 50000用户定义的错误号。 最大值为 2147483647 (2^31 - 1)。

message

最多包含 2048 个字符的字符串。

severity

三个字符字符串之一: INFORMATIONALWARNINGERROR严重性 是可选的,默认值为 INFORMATIONAL.

返回代码值

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

结果集

xp_logevent 返回包含代码示例的以下错误消息:

The command(s) completed successfully.

注解

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

权限

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

示例

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

DECLARE @@TABNAME VARCHAR(30),
    @@USERNAME VARCHAR(30),
    @@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;