2015-01-30 2 views
1

Я предполагаю, что по умолчанию только ошибка с серьезностью 20-25 будет регистрироваться в файле журнала ошибок SQL Server. Как я могу изменить конфигурацию для регистрации даже других ошибок, которые имеют меньшую степень серьезности? Или где я могу найти менее серьезные ошибки, которые регистрируются в SQL Server? Я заинтересован в таких ошибках, какРегистрация ошибок в SQL Server 2012

не смог найти хранимая процедура ИмяХранимойПроцедуры

т.д.

ответ

0

Я извлек следующий блок из этого article, который был бы хорошей отправной точкой для изучения Изменения конфигурации журнала ошибок SQL Server.

Logging Ошибки

SQL Server Agent принимает эти ошибки из журнала ошибок, поэтому, если следует, что ошибки должны быть авторизованы в первую очередь. Невозможно подключить предупреждения к ошибкам, которые не регистрируются. Все сообщения об ошибках с уровнем серьезности с 19 по 25 автоматически записываются в журнал ошибок.

Итак, что делать, если вы хотите регистрировать информационные сообщения или сообщения с низкой степенью серьезности? Если вы хотите получить предупреждение о любых ошибках, которые имеют серьезность менее 19, тогда вы должны изменить их запись в таблице sysmessages, чтобы они всегда регистрировались.

Вы используете это с помощью sp_alterMessage с опцией WITH_LOG, чтобы установить dLevel column to 128. Если сообщение было изменено на WITH_LOG, оно всегда записывается в журнал приложений, однако ошибка происходит.

Даже если RAISERROR выполнен без опции WITH LOG, ошибка, которую вы изменили, записывается в журнал приложения и поэтому отображается предупреждением. Есть веские причины для этого, поскольку он будет регистрировать и, возможно, предупреждать вас о синтаксических ошибках, которые обычно видны только конечным пользователям.

Вы можете заставить любую ошибку, которая запускается программно, записываться в журнал ошибок с помощью параметра WITH LOG с помощью команды RAISERROR. Таким образом, с пользовательской ошибкой severity (9) вы можете зарегистрировать инцидент, вызывать предупреждение, которое, в свою очередь, отправляет кому-то сообщение или запускает задание, просто используя RAISERROR.

Естественно, поскольку задание, которое отвечает на предупреждение, может выполняться Агентом под другим пользователем, вам не нужно назначать небезопасные разрешения для обычного пользователя. Вы можете использовать xp_LogEvent, если, как это, вероятно, вы не хотите, чтобы пользователь видел ошибку. (Только вызов RAISERROR может использовать 'PrintF' форматирования заполнителей в сообщениях об ошибках, так входе ошибки с отформатированных сообщения, используя xp_logevent результаты в буквальном записи сообщения, идентификаторы формата строки и все.)

Я бы рекомендовал обратитесь к original article за дополнительной/подробной информацией об этом.

Следуйте за этим link, чтобы узнать больше о серьезности.