Autor Téma: Vyhledání SQL serverů v síti  (Přečteno 2041 krát)

Offline maillen

  • Příspěvků: 2
  • Karma: 1
    • Verze Delphi: Delphi 5, Turbo Delphi 2006, Lazarus
Vyhledání SQL serverů v síti
« kdy: 24-03-2014, 13:34:32 »
Zdravím vás,

používáme ve firmě program napsaný ve starších Delphi 5 a řeším, jakým způsobem vyhledat dostupné SQL servery v okolní síťi. Potřebuji je načíst do comba a nabídnou uživateli. Něco takového, co nabízí Správce zdrojů ODBC (odbcad32). V aplikaci používám pro následnou komunikaci s MSSQL serverem ADO, tak nejlépe kdyby to šlo přes to.

díky za jakýkoliv info

Milan

Offline TLama

  • Guru
  • *****
  • Příspěvků: 597
  • Karma: 31
    • Verze Delphi: 7, 2009, XE3
Re:Vyhledání SQL serverů v síti
« Odpověď #1 kdy: 24-03-2014, 13:36:34 »
Zdravím vás,

používáme ve firmě program napsaný ve starších Delphi 5 a řeším, jakým způsobem vyhledat dostupné SQL servery v okolní síťi. Potřebuji je načíst do comba a nabídnou uživateli. Něco takového, co nabízí Správce zdrojů ODBC (odbcad32). V aplikaci používám pro následnou komunikaci s MSSQL serverem ADO, tak nejlépe kdyby to šlo přes to.

díky za jakýkoliv info

Milan

Na netu bude spousta ukázek... Dá se i ovládat a konfigurovat dialog pro vytvoření connection stringu (ten co se objeví při dvojkliku na connection objekt). Dá se i pracovat s objekty co jsou pod tím.
« Poslední změna: 24-03-2014, 13:46:13 od TLama »

Offline maillen

  • Příspěvků: 2
  • Karma: 1
    • Verze Delphi: Delphi 5, Turbo Delphi 2006, Lazarus
Re:Vyhledání SQL serverů v síti
« Odpověď #2 kdy: 25-03-2014, 13:22:48 »
Super, funguje i D5! Díky moc.

Pokud to někomu pomůže, tak jsem na vyhledání SQL v síti použil tohle:

Kód: [Vybrat]
uses ActiveX,
     ComObj,
     OleDB,
     DB,
     ADOInt,
     ADODB;

procedure ListAvailableSQLServers(Names: TStringList);
var
  RSCon: ADORecordsetConstruction;
  Rowset: IRowset;
  SourcesRowset: ISourcesRowset;
  SourcesRecordset: _Recordset;
  SourcesName, SourcesType: TField;

function PtCreateADOObject(const ClassID: TGUID): IUnknown;
var
  Status: HResult;
  FPUControlWord: Word;
begin
  asm
    FNSTCW FPUControlWord
  end;
  Status := CoCreateInstance(
              CLASS_Recordset,
              nil,
              CLSCTX_INPROC_SERVER or
              CLSCTX_LOCAL_SERVER,
              IUnknown,
              Result);
  asm
    FNCLEX
    FLDCW FPUControlWord
  end;
  OleCheck(Status);
end;

begin
  SourcesRecordset :=
       PtCreateADOObject(CLASS_Recordset)
       as _Recordset;
  RSCon :=
       SourcesRecordset
       as ADORecordsetConstruction;
   SourcesRowset :=
       CreateComObject(ProgIDToClassID('SQLOLEDB Enumerator'))
       as ISourcesRowset;
   OleCheck(SourcesRowset.GetSourcesRowset(
            nil,
            IRowset, 0,
            nil,
            IUnknown(Rowset)));
   RSCon.Rowset := RowSet;
   with TADODataSet.Create(nil) do
   try
     Recordset := SourcesRecordset;
     SourcesName := FieldByName('SOURCES_NAME');
     SourcesType := FieldByName('SOURCES_TYPE');
     Names.BeginUpdate;
     Names.Clear;
     try
        while not EOF do
        begin
          if (SourcesType.AsInteger = DBSOURCETYPE_DATASOURCE) and
             (SourcesName.AsString <> '') then
            Names.Add(SourcesName.AsString);
          Next;
        end;
     finally
        Names.EndUpdate;
     end;
  finally
     Free;
  end;
end;




procedure GetServer();
var
  oItems: TStringList;
begin
  oItems:= TStringList.Create;
  try
    ListAvailableSQLServers(oItems);
    // To something with oItems
    ShowMessage(oItems.Text);
  finally
    oItems.Free;
  end;
end;

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: