Compartilhar via


xp_logevent (Transact-SQL)

Aplica-se:SQL Server

Registra uma mensagem definida pelo usuário no arquivo de log do SQL Server e no log de eventos do Windows. xp_logevent pode ser usado para enviar um alerta sem enviar uma mensagem para o cliente.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

Importante

Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.

error_number

Um número de erro definido pelo usuário maior que 50000. O valor máximo é 2147483647 (2^31 - 1).

'mensagem'

Uma cadeia de caracteres com um máximo de 2048 caracteres.

'Gravidade'

Uma das três cadeias de caracteres: INFORMATIONAL, WARNINGou ERROR. severity é opcional, com um padrão de INFORMATIONAL.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Conjunto de resultados

xp_logevent Retorna a seguinte mensagem de erro para o exemplo de código incluído:

The command(s) completed successfully.

Comentários

Ao enviar mensagens de procedimentos Transact-SQL, gatilhos, lotes e assim por diante, use a RAISERROR instrução em vez de xp_logevent. xp_logevent não chama um manipulador de mensagens de um cliente ou define @@ERROR. Para gravar mensagens no log de eventos do Windows e no arquivo de log de erros do SQL Server em uma instância do SQL Server, execute a RAISERROR instrução.

Permissões

Requer associação na função de banco de dados fixa db_owner no master banco de dados ou associação na função de servidor fixa sysadmin .

Exemplos

O exemplo a seguir registra a mensagem, com variáveis passadas à mensagem em Visualizador de Eventos do 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;