AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL-Server auflisten dauert lange
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Server auflisten dauert lange

Ein Thema von rawi · begonnen am 28. Jun 2020 · letzter Beitrag vom 29. Jun 2020
 
rawi

Registriert seit: 16. Mär 2010
Ort: im Westen Deutschlands
38 Beiträge
 
Delphi 2010 Professional
 
#1

SQL-Server auflisten dauert lange

  Alt 28. Jun 2020, 14:43
Datenbank: SQL-Server • Version: ab 2012 • Zugriff über: -
Hallo Delphi-Gemeinde,

ich möchte mich heute mit einem (hoffentlich) kleinen Problem an euch wenden. Leider habe ich bisher keine Lösung oder Erklärung für mein Problem gefunden.

Ich habe folgende Routine in mein Programm eingebaut.

Delphi-Quellcode:
procedure TfrmMain.ListAvailableSQLServers(Names: TStringList);
  {- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
  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;
  {- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
var
  RSCon: ADORecordsetConstruction;
  Rowset: IRowset;
  SourcesRowset: ISourcesRowset;
  SourcesRecordset: _Recordset;
  SourcesName, SourcesType: TField;
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;
Hat bisher auch super auf mehreren Rechnern funktioniert. Vor einiger Zeit startete das Programm auf einem Rechner sehr langsam. Auf allen anderen Rechnern startete das Programm wie gewohnt. Bisher jedenfalls. Mittlerweile ist der Programmstart auf allen Rechnern langsam.

Der Grund für den langsamen Start ist wohl die folgende Programmzeile.

OleCheck(SourcesRowset.GetSourcesRowset(nil, IRowset, 0, nil, IUnknown(Rowset)));

Die Ausführung dieses Befehls dauert 45 sekunden. Vorher wurde das kpl. Programm in ca. 5-10 sekunden gestartet.

An den einzelnen Rechnern wurde eigentlich nichts verändert. Normale Win 10 Pro Rechner, mit unterschiedlichen Virenprogrammen (MS und Norton) und unterschiedlichen Office-Paketen (2010 bis Office 365). Lediglich die Windowsupdates wurden installiert.

Nun meine Frage, hat jemand eine Idee wo das Problem liegen könnte?

Vorab schon mal vielen Dank.
Gruß Rainer
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz