Что самый быстрый метод должен проверить наличие SQL-сервера?

Что должен проверить лучший метод, существует ли SQL-сервер или нет?

Я пробую Microsoft. SqlServer. Управление. Smo. Сервер. PingSqlServerVersion () и это хорошо работает, если сервер существует и доступный. Но это довольно симпатичный медленный, если нет такого сервера.

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

Что Вы рекомендуете использовать?

5
задан iLemming 15 July 2010 в 15:25
поделиться

4 ответа

Вы можете просто использовать TcpClient класс для запроса сервера и проверки, открыт ли определенный порт, может быть что-то вроде этого:

using System.Net;
using System.Net.Sockets;

public bool CheckServerAvailablity(string serverIPAddress, int port)
{
  try
  {
    IPHostEntry ipHostEntry = Dns.Resolve(serverIPAddress);
    IPAddress ipAddress = ipHostEntry.AddressList[0];

    TcpClient TcpClient = new TcpClient();
    TcpClient.Connect(ipAddress , port);
    TcpClient.Close();

    return true;
  }
  catch
  {
    return false;
  }
} 
4
ответ дан 18 December 2019 в 14:41
поделиться

Вы все еще можете использовать Microsoft.SqlServer.Management.Smo.Server.PingSqlServerVersion () , но использовать его асинхронно. например вы можете вызвать его через класс BackWorker . Событие DoWork вызовет Microsoft.SqlServer.Management.Smo.Server.PingSqlServerVersion () . RunWorkerCompleted просто установит для логической переменной значение true. Таким образом, вы можете запустить его, подождать сколько хотите, проверить логическое значение, и если оно не соответствует действительности, вы узнаете, что сервер SQL еще не ответил, и вы можете отменить BackgroundWorker.

5
ответ дан 18 December 2019 в 14:41
поделиться

Вы можете попробовать открыть сокет tcp на порт 1433 (порт sql по умолчанию) с коротким таймаутом и посмотреть, ответит ли он.

Для этого необходимо, чтобы на SQL-сервере был включен протокол TCP/IP.

3
ответ дан 18 December 2019 в 14:41
поделиться

Чтобы добавить к Mikael's, вы также можете сначала пинговать хост, так как он будет реагировать быстрее всего, если сервер не работает.

Конечно, все это предполагает, что вы пытаетесь добраться до удаленного сервера по TCP/IP.

1
ответ дан 18 December 2019 в 14:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: