适用范围:SQL Server
在 SQL Server 日志文件和 Windows 事件日志中记录用户定义的消息。
xp_logevent 可用于发送警报而不向客户端发送消息。
语法
xp_logevent { error_number , 'message' } [ , 'severity' ]
参数
重要
扩展存储过程的参数必须按特定顺序输入,如 语法 节中所述。 如果参数按顺序输入,则会出现错误消息。
error_number
大于 50000用户定义的错误号。 最大值为 2147483647 (2^31 - 1)。
“message”
最多包含 2048 个字符的字符串。
“severity”
三个字符字符串之一: INFORMATIONAL, WARNING或 ERROR。
严重性 是可选的,默认值为 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;
EXECUTE xp_logevent 60000,
@@MESSAGE, informational;