Как узнать состояние экземпляра sql в программе ac # - PullRequest
0 голосов
/ 04 ноября 2011

У меня есть одна база данных с одним зеркалом в режиме повышенной безопасности (в данный момент используется следящий сервер, но планируется его вывести), эта база данных будет использоваться для хранения данных, собранных программой ac #.

Я хочу знать, как я могу проверить в своей программе состояние всех экземпляров SQL и вызвать / принудительно выполнить восстановление после отказа вручную.

Есть ли какой-нибудь c # API, чтобы помочь мне с этим?

информация: я использую sql server 2008

edit: Я знаю, что могу запросить sys.database_mirroring, но для этого мне нужна основная база данных, и я бы запустилнравится связываться с каждым экземпляром sql и проверять их статус.

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

Использование Объекты управления SQL Server (SMO) .

Объекты управления SQL Server (SMO) - это набор объектов, предназначенных для программирования всех аспектов управления Microsoft SQL Server. Объекты управления репликацией SQL Server (RMO) - это набор объектов, который инкапсулирует управление репликацией SQL Server.

Я использовал SMO в управляемых приложениях раньше - работает удовольствие.


Чтобы узнать состояние экземпляра, используйте объект Server - он имеет свойства State и Status.

0 голосов
/ 08 ноября 2011

немного поиграв, я нашел это решение (не думаю, что это правильное решение, поэтому оставляйте комментарии, плз)

using Microsoft.SqlServer.Management.Smo.Wmi;

ManagedComputer mc = new ManagedComputer("localhost");
foreach (Service svc in mc.Services) {
    if (svc.Name == "MSSQL$SQLEXPRESS"){
        textSTW.Text = svc.ServiceState.ToString();
    }
    if (svc.Name == "MSSQL$TESTSERVER"){
        textST1.Text = svc.ServiceState.ToString();
    }
    if (svc.Name == "MSSQL$TESTSERVER3") {
        textST2.Text = svc.ServiceState.ToString();
    }
}

таким образом, я просто ищу состояние служб (работает / остановлен) и работает намного быстрее, я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...