2010-09-29 2 views
3

Мне нужно программно (.NET 3.5, C#) контролировать машину SQL Server 2008 через WMI. Я хочу измерить количество пакетных запросов в секунду, которое получает сервер; это то, что инструмент Windows 7 Performance Monitor покажет вам по категории SQL Server:SQL Statistics, счетчик Batch Requests/sec. Если я отслеживаю сервер с помощью этого инструмента, я наблюдаю базовую линию нуля, когда сервер простаивает, до 100 или 200, когда я ударил его некоторыми запросами из моего приложения.Мониторинг пакетных запросов в секунду на SQL Server через WMI

Теперь, когда я пытаюсь использовать классы WMI в .NET для получения одних и тех же данных, я только читаю нули, независимо от того, насколько сильно я попал на сервер с запросами. Из того, что я прочитал в MSDN, некоторые счетчики производительности не должны получать мгновенно, но предлагается выборка. Я не мог найти информацию о том, какие счетчики попадают в эту категорию, т. Е. Следует ли использовать выборку для измерения пакетных запросов в секунду? Кроме того, какой выбор? Я полагаю, что средство анализа производительности Windows делает некоторые вычисления за кулисами, чтобы показать графики, которые он показывает; Я хотел бы получить аналогичные результаты. Кто-то прошел подобный опыт и успешно его разрешил? Благодарю.

ответ

1

Да, это точно. Это зависит от вашего кода, чтобы сделать то же самое, что и Perfmon: запросите счетчик производительности один раз в секунду, чтобы получить значимое значение. Вам понадобится таймер или (ть) вызов Sleep(). Использование класса PerformanceCounter - лучший способ сделать это, WMI не дешево. Это также дает вам доступ к свойству PerformanceCounter, которое сообщает вам, какой счетчик он имеет. Не имеет значения, вы знаете, что вам нужен таймер.

Смежные вопросы