Leer en inglés

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

syntaxsql
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:

Output
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.

SQL
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;