Проверить наличие экземпляра SQL Server (ADO .NET)
От: Аноним  
Дата: 10.08.10 11:25
Оценка:
Есть экземпляр SQL Server 2005 (2008).

Требуется мониторить (отслеживать на доступность) данный экземпляр.

Вопрос: как это сделать ? Предполагаю, что для этого надо использовать ADO .NET, а может быть что-то другое, типа SSMO (sql server management objects).

C#
Re: Проверить наличие экземпляра SQL Server (ADO .NET)
От: QrystaL Украина  
Дата: 10.08.10 11:59
Оценка:
String connString = "Data Source=localhost;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;";
using (var conn = new SqlConnection(connString))
{
    try
    {
        conn.Open();
    }
    catch (SqlException)
    {
    }
}
Re: Проверить наличие экземпляра SQL Server (ADO .NET)
От: _FRED_ Черногория
Дата: 10.08.10 12:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть экземпляр SQL Server 2005 (2008).

А>Требуется мониторить (отслеживать на доступность) данный экземпляр.
А>Вопрос: как это сделать ? Предполагаю, что для этого надо использовать ADO .NET, а может быть что-то другое, типа SSMO (sql server management objects).
А>C#

А что именно требуется там мониторить? Например, можно мониторить то, запущен ли на определённом компьютере определённый сервис (а скл-сервер и есть сервис). Можно попробовать сделать это через WMI. Не уверен, что удастся получить нотификацию, но "пинговать" периодически можно. Так же можно попробовать проверять через ServiceController.

Можно мониторить "соединение", то есть возможность определённого пользователя доступиться к определённой базе на сервере. Это несколько другое. Там можно использовать ADO. Для использования SMO будет требоваться дополнительная (к обычному фреймворку) установка клиентских средств сиквела.
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: Аноним  
Дата: 10.08.10 13:02
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>А что именно требуется там мониторить?


Требуется мониторить исключительно наличие экземпляра. Желательно чтобы время опроса было минимальным.

_FR>Можно мониторить "соединение", то есть возможность определённого пользователя доступиться к определённой базе на сервере. Это несколько другое.


Это как в ответе QrystaL выше ?

_FR>Для использования SMO будет требоваться дополнительная (к обычному фреймворку) установка клиентских средств сиквела.


Если дополнительная установка бесплатная, то можно. Мне важно отслеживать наличие экземпляра, и если SMO это позволяет, то без проблем. Как ей проверять ?
Re[2]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: Аноним  
Дата: 10.08.10 13:07
Оценка:
Здравствуйте, QrystaL, Вы писали:

Спасибо за вариант, пока в работе ориентируюсь на него
Re[3]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: HowardLovekraft  
Дата: 10.08.10 13:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Желательно чтобы время опроса было минимальным.

При такой постановке вопроса рекоменую забить.
В общем случае невыполнимо.
Re[4]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: Аноним  
Дата: 10.08.10 13:14
Оценка:
Здравствуйте, HowardLovekraft, Вы писали:

HL>Здравствуйте, Аноним, Вы писали:


А>>Желательно чтобы время опроса было минимальным.

HL>При такой постановке вопроса рекоменую забить.
HL>В общем случае невыполнимо.

А какое время опроса по вашему оптимально ? Наличие экземпляра проверять все равно придется, а вот с каким интервалом ?
Re[5]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: HowardLovekraft  
Дата: 10.08.10 13:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А какое время опроса по вашему оптимально ?

Оптимально не опрашивать вовсе. Смысл?
Re[3]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: _FRED_ Черногория
Дата: 10.08.10 13:18
Оценка:
Здравствуйте, Аноним, Вы писали:

_FR>>А что именно требуется там мониторить?

А>Требуется мониторить исключительно наличие экземпляра.

Что значит "наличие"? Установлен сервер или не установлен и не важно, запущен или нет?

А>Желательно чтобы время опроса было минимальным.


Это, как минимум, будет зависеть от таймаута сетевого соединения. Высокоуровневые средства обычно н позволяют им управлять, а с лезть через низкоуровневые будет, подозреваю, ой как не просто.

_FR>>Можно мониторить "соединение", то есть возможность определённого пользователя доступиться к определённой базе на сервере. Это несколько другое.

А>Это как в ответе QrystaL выше ?

Да.

_FR>>Для использования SMO будет требоваться дополнительная (к обычному фреймворку) установка клиентских средств сиквела.

А>Если дополнительная установка бесплатная, то можно.

Не уверен. Курите лицензионное соглашение. Хотя, может, со всякими экспрессами оно бесплатно и ставится.
Help will always be given at Hogwarts to those who ask for it.
Re[6]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: Аноним  
Дата: 10.08.10 13:24
Оценка:
Здравствуйте, HowardLovekraft, Вы писали:

HL>Оптимально не опрашивать вовсе. Смысл?


Мне за это деньги платят
Re[4]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: Аноним  
Дата: 11.08.10 05:32
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Что значит "наличие"? Установлен сервер или не установлен и не важно, запущен или нет?


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

_FR>Это, как минимум, будет зависеть от таймаута сетевого соединения. Высокоуровневые средства обычно н позволяют им управлять, а с лезть через низкоуровневые будет, подозреваю, ой как не просто.


А какое время вы считаете оптимальным для проверки наличия экземпляра sql server ? Отслеживать придется постоянно, а вот интервал опроса надо определить самостоятельно ...
Re[5]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: _FRED_ Черногория
Дата: 11.08.10 05:47
Оценка:
Здравствуйте, Аноним, Вы писали:

_FR>>Что значит "наличие"? Установлен сервер или не установлен и не важно, запущен или нет?


А>В первоначальной постановке задачи требуется проверять наличие экземпляра SQL Server. Думаю, под наличием подразумевается то, что экземпляр запущен и к нему можно обращаться (посылать запросы).


Всё равно не понимаю, что это значит, ну да ладно.

_FR>>Это, как минимум, будет зависеть от таймаута сетевого соединения. Высокоуровневые средства обычно н позволяют им управлять, а с лезть через низкоуровневые будет, подозреваю, ой как не просто.


А>А какое время вы считаете оптимальным для проверки наличия экземпляра sql server ?


"Считать" нужно тогда, когда известно для чего это нужно и прочяя "обвязка", так что решайте сами.

А>Отслеживать придется постоянно, а вот интервал опроса надо определить самостоятельно ...


Зависеть величина интервала должна от точности, с которой определяется недоступность сервера. Если точность нужно порядка секунды, то опрашивать надо два раза в секунду. Этот параметр можно вынести в настройки, что бы при конфигурации можно было бы указать преемлемое для пользователя значение.
Help will always be given at Hogwarts to those who ask for it.
Re[6]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: Аноним  
Дата: 11.08.10 12:22
Оценка:
Здравствуйте, _FRED_, Вы писали:

А>>В первоначальной постановке задачи требуется проверять наличие экземпляра SQL Server. Думаю, под наличием подразумевается то, что экземпляр запущен и к нему можно обращаться (посылать запросы).


_FR>Всё равно не понимаю, что это значит, ну да ладно.


Что конкретно не понимаете ? Я могу дополнительно пояснить.

Есть клиентское приложение, работающее с базой данных. В базе данных хранится очень критичная для всей системы информация. Оператору клиентского приложения должно быть известно, есть ли проблемы при работе с базой данных, доступностью базы данных. Так как взаимодействия между клиентским приложением и базой при определенных условиях являются нечастыми, то есть требование, постоянно отслеживать наличие доступа к базе данных. При его отсутствии клиентское приложение генерирует ошибку.
Re[7]: Проверить наличие экземпляра SQL Server (ADO .NET)
От: _FRED_ Черногория
Дата: 11.08.10 12:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>>В первоначальной постановке задачи требуется проверять наличие экземпляра SQL Server. Думаю, под наличием подразумевается то, что экземпляр запущен и к нему можно обращаться (посылать запросы).


_FR>>Всё равно не понимаю, что это значит, ну да ладно.


А>Что конкретно не понимаете ? Я могу дополнительно пояснить.


А>Есть клиентское приложение, работающее с базой данных. В базе данных хранится очень критичная для всей системы информация. Оператору клиентского приложения должно быть известно, есть ли проблемы при работе с базой данных, доступностью базы данных. Так как взаимодействия между клиентским приложением и базой при определенных условиях являются нечастыми, то есть требование, постоянно отслеживать наличие доступа к базе данных. При его отсутствии клиентское приложение генерирует ошибку.


Во, это уже дельное описания. Я бы в первую очередь рекомендовал бы поставить на компьютер оператора клиентские тулзы от MSSQL 2000 — там было приложение (MS SQL Server Service Manager), которое сидит в трее и показывает доступность сервера.

Если нужно самим програмно и нотифицировать юзера, я бы в данном случае отслеживал не "сервис", а всё-таки само подключение, как уже было показано выше. Периодичность — надо смотреть какая надёжная сетска между клиентом и сервером, как часто при общении случаются задержки — очень всё индивидуально. Но попробуйте ради эксперимента раз в пять секунд проверять — может и не заметно совсем будет и окажется допустимым. А может и раз в секунду окажется приемлемым — очень от многого зависит, чо бы так вот чёрному ящику советовать — эксперементировать нужно.
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.