Announcement

Collapse
No announcement yet.

Setzen con ADODataset.CommandText dauer lange

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Setzen con ADODataset.CommandText dauer lange

    Hallo *.*

    ich habe ein Problem, bei dem ich so nicht weiter komme:<BR>
    Wenn ich die Procedure unten in meiner Applikation aufrufe, dann<BR>
    arbeitet alles soweit normal. Jedoch nur unter MSSQL. Sobald ich<BR>
    das gleiche unter Oracle versuche, dauert das setzen der Property<BR>
    DS.CommandText geschlagene 11 Sekunden. Das Lesen der Daten ist dann<BR>
    mit 500 ms wieder ok. Selbst das Öffnen des DataSets dauert nur ca. 1/2<BR>
    Sekunde.<BR>
    <BR>
    Systemumgebund : WinNT 4.0 SP6 MDAC 2.6 Delphi 5 SP1 Borland Ado-Komponenten SP1/2<BR>
    <BR>
    Hat jemand einen Tip?<BR>
    <BR>
    Danke<BR>
    <BR>
    Mark<BR>
    <BR>
    <PRE>
    Procedure GetADOResult(OLEV: Variant; DS : TADODataSet ; KundeKonto: integer; FieldID : integer);
    var
    FieldValue : String;
    begin
    if DS.active = true then DS.Close;
    FieldValue := OLEV.GetObjAttrib(FieldID);
    try
    Case KundeKonto of
    0 : begin
    // start
    DS.CommandText := 'select * from ' + ViewName + ' where NO=''' + FieldValue + '''';
    // now 11 seconds are passed
    DS.Open; // only takes 1/2 seconds

    1 : begin // KundenNrID gegeben

    :
    :

    end;
    :
    :
    end;

    except
    // Schließen der Datenverbindung<BR>
    DS.Close;
    end;
    end;</PRE>

  • #2
    Besteht bereits eine active Connection zur Oracle Datenbank, wenn nich dann versucht das DataSet erst eine Verbindung auszubauen und das kann durchaus bis zu 11 sekunden dauern......

    Im Vergleich dazu ist ein Connect an MS-SQL oder andere sofort da ..

    Comment


    • #3
      Nein, leider nicht, denn das Programm startet und soll gleich eine Verbindung aufbauen. Ich habe zum Test mal eine ADO-Connection eingebaut. Dann macht das Setzen der Property keine Probleme mehr. Dafür aber der Open der Connection (in diesem Fall dann sogar 13 Sekunden).<BR>
      <BR>
      Gibt es eine Möglichkeit, den Verbindungsaufbau zu beschleunigen?<BR>
      <BR>
      Danke <BR>
      <BR>
      Mark<BR&gt

      Comment


      • #4
        Hallo,

        man könnte beim dem DataSet zuerst die Connection auf nil setzen, danach den ConnectionString zuweisen, dann wieder die Connection setzen und das DataSet öffnen ...

        Comment


        • #5
          Hm, dadurch wird das Setzen nur schneller. Das Problem mit dem langen Verbindungsaufbau bleibt dann aber trotzdem noch.<BR>
          <BR>
          Gibt es Parameter, die den Verbindungsaufbau beschleunigen? Oder Stellschrauben von Oracle, an denen ich drehen kann?<BR>
          <BR>
          Danke<BR>
          <BR>
          Mar

          Comment


          • #6
            Laut unserer Oracle DBA's soll z.B. in den TNSNames.Ora die IP-Adresse auch in der HOSTS mit Computernamen eingetragen werden, aber bei mir ergab das keine Änderung und bislang war bei jeder Oracle-Instance die mir unterkam exakt das gleiche Problem. Dies kann auch mit den Oracle eigenen Tools nachgewiesen werden ( SQL-Plus ) ....

            In meinen Projekten verwende ich eine zentrale Connection und reiche diese an die entsprechenden Datasets und Commands weiter .....

            So dauert nur die erstmalige Anmeldung etwas ....

            Comment


            • #7
              Vielen Dank für die Mühe.<BR>
              <BR>
              Die Antwort ernüchtert mich ein wenig. Da hätte ich von Oracle doch wirklich mehr erwartet. In dem Fall werde ich wohl konzeptionell ein wenig umdenken müssen

              Comment

              Working...
              X