Мониторинг пакетных запросов в секунду на SQL Server через WMI - PullRequest
3 голосов
/ 29 сентября 2010

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

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

1 Ответ

1 голос
/ 29 сентября 2010

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

...