Монитор состояния SQL Server - PullRequest
4 голосов
/ 14 апреля 2011

Мое приложение подключается к 3 серверам SQL и 5 базам данных одновременно.Мне нужно показать статусы {running|stopped|not found} в моей строке состояния.

Любая идея / пример кода, который я могу использовать здесь?Этот код не должен влиять на скорость приложения или нагрузку на сервер SQL.

Buddhi

Ответы [ 5 ]

1 голос
/ 25 апреля 2011

Я думаю, вам следует использовать WMI (используя класс ServiceController (с конструктором this ). Вы в основном запрашиваете сервер, на котором находится сервер sql, и проверяете его состояние.

В приведенном ниже примере предполагается, что ваше приложение написано на c #:

ServiceController sc = new ServiceController("MSSQLSERVER", serverName); 
string status = sc.Status.ToString();
1 голос
/ 14 апреля 2011

При подключении (проверка соединения) или невозможности соединения (проверка отсутствия соединения) в приложении будут некоторые издержки, но вы можете предотвратить время ожидания, проверив это асинхронно.

1 голос
/ 14 апреля 2011

"Этот код не должен влиять на скорость приложения или накладные расходы на SQL-сервер"

Это сценарий Schroedinger's Cat: для того, чтобы узнать текущее состояние данного удаленногоуслуга или процесс, вы должны сериализовать сообщение в сети, ждать ответа, десериализовать ответ и действовать в соответствии с ним.Все это потребует некоторой работы и ресурсов со всех задействованных машин.

Однако эта работа может выполняться в фоновом потоке вызывающей стороны и, если ее не вызывать слишком часто, может не повлиять на целевой сервер (ы)любым измеримым способом.

Вы можете использовать SMO (объекты управления SQL Server) для подключения к удаленному серверу и делать практически все, что вы можете делать с помощью инструментов администратора SQL, так как они используют SMOработать свою магию тоже.Это довольно простой API и может быть очень мощным в правильных руках.

SMO, что неудивительно, требует, чтобы у вас были соответствующие права на ящики, которые вы хотите отслеживать.Если у вас нет / у вас нет достаточных прав, вы можете попросить дружественную команду разработчиков SQL опубликовать простой фид данных, предоставляющий некоторые необходимые данные.

HTH.

0 голосов
/ 10 февраля 2013

Полное раскрытие, я основатель Cotega

Если вам нужен сервис для этого, наш сервис позволяет отслеживать время безотказной работы и производительность SQL Server. Кроме того, вы можете настроить уведомления о том, что база данных недоступна, снижается производительность, возникают проблемы с размером базы данных или количеством пользователей и т. Д.

0 голосов
/ 18 апреля 2011

Мы используем следующий SQL-запрос для проверки статуса конкретной базы данных

SELECT 'myDatabase status is:' AS Description, ISNULL((select state_desc FROM sys.databases WITH (NOLOCK) WHERE name ='myDatabase'),'Not Found') AS [DBStatus]

Это должно иметь очень мало накладных расходов, особенно в сочетании с лучшими методиками, такими как фоновые или асинхронные потоки

...