Поделиться через


xp_logevent (Transact-SQL)

Применимо к:SQL Server

Регистрирует определяемое пользователем сообщение в файле журнала SQL Server и в журнале событий Windows. xp_logevent можно использовать для отправки оповещения без отправки сообщения клиенту.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

error_number

Определяемое пользователем число ошибок больше 50000. Максимальное значение равно 2147483647 (2^31 – 1).

Сообщение

Строка символов с не более чем 2048 символами.

"серьезность"

Одна из трех строк символов: INFORMATIONAL, WARNINGили ERROR. Уровень серьезности необязателен , при этом значение по умолчанию INFORMATIONALравно .

Значения кода возврата

0 (успешно) или 1 (сбой).

Результирующий набор

xp_logevent возвращает следующее сообщение об ошибке для включенного примера кода:

The command(s) completed successfully.

Замечания

При отправке сообщений из процедур Transact-SQL, триггеров, пакетов и т. дxp_logevent. используйте инструкцию RAISERROR вместо этого. 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;

EXEC xp_logevent 60000, @@MESSAGE, informational;