Compartir a través de


xp_logevent (Transact-SQL)

Se aplica a: SQL Server

Registra un mensaje definido por el usuario en el archivo de registro de SQL Server y en el registro de eventos de Windows. xp_logevent se puede usar para enviar una alerta sin enviar un mensaje al cliente.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

error_number

Número de error definido por el usuario mayor que 50000. El valor máximo es 2147483647 (2^31 - 1).

'message'

Cadena de caracteres con un máximo de 2048 caracteres.

'gravedad'

Una de las tres cadenas de caracteres: INFORMATIONAL, WARNINGo ERROR. la gravedad es opcional, con un valor predeterminado de INFORMATIONAL.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Conjunto de resultados

xp_logevent devuelve el siguiente mensaje de error para el ejemplo de código incluido:

The command(s) completed successfully.

Comentarios

Al enviar mensajes desde procedimientos de Transact-SQL, desencadenadores, lotes, etc., use la RAISERROR instrucción en lugar de xp_logevent. xp_logevent no llama a un controlador de mensajes de un cliente ni establece @@ERROR. Para escribir mensajes en el registro de eventos de Windows y en el archivo de registro de errores de SQL Server dentro de una instancia de SQL Server, ejecute la RAISERROR instrucción .

Permisos

Requiere la pertenencia a la db_owner rol fijo de base de datos en la master base de datos o pertenencia al rol fijo de servidor sysadmin.

Ejemplos

En el siguiente ejemplo se registra el mensaje (con las variables pasadas al mensaje) en el Visor de eventos de 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;