Назад | Перейти на главную страницу

SQL Server 2008: зеркальное отображение: пороговые предупреждения на уровне базы данных

Тестирование, которое я завершил на сегодняшний день, похоже, указывает на то, что следующие пороговые предупреждения должны быть определены для <all databases> Имя базы данных, а не одноименная база данных:

Это отличается от документации, предоставленной Microsoft:

Я подтвердил, что номера ошибок 32040, 32042, 32043 и 32044 записываются в журнал SQL Server в соответствии с sp_altermessage:

/* Unsent Log Threshold (http://msdn.microsoft.com/en-us/library/aa337325.aspx) */
sp_altermessage 32042, 'WITH_LOG', TRUE

Если вы добьетесь успеха, я был бы признателен, если бы вы описали действия, которые вы предприняли для вызывать пороговые предупреждения для отдельной базы данных.

Спасибо.

На основании вашего списка я предполагаю, что ваши предупреждения срабатывают, когда вы выбираете все базы данных, но не срабатывают при выборе конкретной базы данных.

Последовательность выполнения задания агента SQL для мониторинга базы данных выглядит следующим образом:

  1. Периодически запускает sys.dbmonitorupdate (например, раз в минуту). Этот вызов выполняет следующие действия:
  2. Получает значения из sys.dm_os_performance_counters
  3. Вставляет в msdb.dbo.dbm_monitor_data
  4. При достижении порога возникает ошибка
  5. Что касается предупреждений, он может не сработать, потому что процедура sp_dbmmonitorupdate находится в контексте msdb. Таким образом, вы получите огонь не для отдельных баз данных, а для всех баз данных.

Я не знаю, является ли это универсальным поведением или было исправлено позже, но я видел такой случай. Так что, если это описывает вашу ситуацию и вы не хотите использовать «все базы данных» - тогда вам нужно будет либо написать свою собственную процедуру обнаружения и задание, чтобы обойти это (могут быть и другие решения, но у вас нет возможность изменить вышеупомянутые системные хранимые процедуры и по-прежнему поддерживать их).