Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как узнать, доступен ли в сети сервер MS SQL

Delphi , Базы данных , SQL

Как узнать, доступен ли в сети сервер MS SQL

Два программиста:
- Ко мне вчера чувак приходил, сервак сломал.
- Он что хакер?
- Нет, мудак!


function CheckMSSQLServer(fServerName, fUserName, fPsw : string) : Bool;
var
  wDb : TDatabase;
begin
  // Check if MS SQL Server is reachable
  // Важно! BDE Должна быть установлена
  Result := False;
  wDb := TDatabase.Create(nil);

  with wDb do
  begin
    DatabaseName := 'wDbDatabaseName'; // arbitrary name, must be unique
    // in current Session
    Params.Values['SERVER Name'] := fServerName;
    Params.Values['USER Name'] := fUserName;
    Params.Values['PASSWORD'] := fPsw;
    LoginPrompt := False;
  end;

  try
    wDb.DriverName := 'MSSQL';
    try
      wDb.Connected := True;
      wDb.Connected := False;
    except
      ShowMessage('Server is not reachable');
    end;
    Result := True;
  finally
    wDb.Free;
  end;
end;

Программная функция Delphi для проверки доступности сервера MS SQL!

Давайте разберемся:

Функция CheckMSSQLServer принимает три параметра типа строка: fServerName, fUserName и fPsw. Она возвращает булевое значение, указывающее, доступен ли сервер.

Вот, что функция делает:

function CheckMSSQLServer(fServerName, fUserName, fPsw: string): Bool;
var
  wDb: TDatabase;
begin
   // Создаем объект TDatabase
  wDb := TDatabase.Create(nil);

  with wDb do
  begin
     // Устанавливаем некоторые свойства
    DatabaseName := 'wDbDatabaseName'; // произвольное имя, должно быть уникальным в текущем сеансе
    Params.Values['SERVER Name'] := fServerName;
    Params.Values['USER Name'] := fUserName;
    Params.Values['PASSWORD'] := fPsw;
    wDb.LoginPrompt := False; // или wDb.LoginPrompt := false, как предложено
  end;

  try
     // Устанавливаем имя драйвера в 'MSSQL'
    wDb.DriverName := 'MSSQL';

    try
       // Пытаемся подключиться к серверу
      wDb.Connected := True;
      Result := True; // Если мы дошли до этого пункта, то сервер доступен
    except
      ShowMessage('Server is not reachable'); // Обрабатываем любые исключения, которые возникнут при подключении
    end;
  finally
    wDb.Free; // Освобождаем объект TDatabase
  end;
end;

Вот несколько предложений:

  1. Вместо использования LoginPrompt := False, можно использовать wDb.LoginPrompt := false для установки поведения запроса на вход в систему явно.
  2. Блок try-except - это хорошая идея, но вам может быть полезнее логировать исключение вместо отображения сообщения об ошибке. Это позволит вам обрабатывать ошибки более элегантно в вашей приложении.
  3. Вы не需要 устанавливать wDb.Connected := False после установки wDb.Connected := True. Подключение будет автоматически закрыто, когда объект будет освобожден.

В целом, функция выглядит хорошо! Она структурирована и легко понятна. Немного минорных изменений может сделать ее еще лучше.

В статье описывается функция в Delphi, которая проверяет доступность сервера MS SQL к сети, используя библиотеку BDE.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: SQL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 05:06:53/0.022947788238525/0