Freigeben über


xp_logevent (Transact-SQL)

Protokolliert eine benutzerdefinierte Nachricht in der SQL Server-Protokolldatei und in der Windows-Ereignisanzeige. Mit xp_logevent kann eine Warnung gesendet werden, ohne eine Nachricht an den Client zu senden.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • error_number
    Eine benutzerdefinierte Fehlernummer, die größer als 50.000 ist. Der Maximalwert ist 2147483647 (2^31 - 1).

  • 'message'
    Eine Zeichenfolge mit maximal 2048 Zeichen.

  • 'severity'
    Eine der drei folgenden Zeichenfolgen: INFORMATIONAL, WARNING oder ERROR. severity ist optional (mit dem Standardwert INFORMATIONAL).

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Resultsets

xp_logevent gibt für das Codebeispiel die folgende Fehlermeldung zurück:

The command(s) completed successfully.

Hinweise

Verwenden Sie beim Senden von Nachrichten von Transact-SQL-Prozeduren, -Triggern, -Batches usw. statt xp_logevent die RAISERROR-Anweisung. xp_logevent ruft nicht den Nachrichtenhandler eines Clients auf und legt nicht @@ERROR fest. Führen Sie die RAISERROR-Anweisung aus, um Nachrichten in die Windows-Ereignisanzeige und in die SQL Server-Fehlerprotokolldatei in einer Instanz von SQL Server zu schreiben.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Datenbankrolle db_owner in der master-Datenbank oder Mitgliedschaft in der festen Serverrolle sysadmin.

Beispiele

Im folgenden Beispiel wird die Nachricht (mit den an sie übergebenen Variablen) in der Windows-Ereignisanzeige protokolliert.

DECLARE @@TABNAME varchar(30)
DECLARE @@USERNAME varchar(30)
DECLARE @@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