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


xp_logevent (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

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

Аргументы

  • error_number
    Номер пользовательской ошибки, больший 50 000. Максимальное значение равно 2 147 483 647 (2^31 - 1).

  • ' message '
    Символьная строка, которая может содержать не более 2048 символов.

  • ' severity '
    Одна из трех символьных строк: INFORMATIONAL, WARNING или ERROR. Аргумент severity является необязательным, значение по умолчанию — 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),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;

См. также

Справочник

PRINT (Transact-SQL)

RAISERROR (Transact-SQL)

Системные хранимые процедуры (Transact-SQL)

Основные расширенные хранимые процедуры (Transact-SQL)