Announcement

Collapse
No announcement yet.

ADO Connection Timeout

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

  • ADO Connection Timeout

    Ist hier schon öfters besprochen worden ABER:
    Hat es denn mal jemand tatsächlich geschafft den timeout zu erhöhen/veringern?
    Wir verwenden die nativen ADO Objekte _Command _connection etc. aus ADO 2.7 und ich kann einfach keinen timeout einstellen?!?
    Egal, ob ich das beim command oder bei der connection mache ich werde einfach ignoriert...
    Der timeout ist eingestellt auf 30 sek. und fertig!

    Ich würde gerne mal den "Fehlerfall" timeout testen, aber dazu müßte ich den timeout runtersetzen das nimmt mir aber das System scheinbar nicht?!?

    Umgebung:
    Delphi 5
    ADO 2.7
    SQL Server 2000

    BYE BERND

  • #2
    Hallo Bernd,
    versuchs mal mit :<br>
    // ************************************************** *******************//
    // Interface: Connection15
    // Flags: (4432) Hidden Dual OleAutomation Dispatchable
    // GUID: {00000515-0000-0010-8000-00AA006D2EA4}
    // ************************************************** *******************//
    Connection15 = interface(_ADO)
    ['{00000515-0000-0010-8000-00AA006D2EA4}']
    function Get_ConnectionString: WideString; safecall;
    procedure Set_ConnectionString(const pbstr: WideString); safecall;
    function Get_CommandTimeout: Integer; safecall;
    procedure Set_CommandTimeout(plTimeout: Integer); safecall;
    function Get_ConnectionTimeout: Integer; safecall;
    procedure Set_ConnectionTimeout(plTimeout: Integer); safecall

    Comment


    • #3
      Ich verwende
      _Connection = interface(Connection15)
      ['{00000550-0000-0010-8000-00AA006D2EA4}']
      procedure Cancel; safecall;
      end;

      entsprechend sollte das dann eigentlich identisch sein?!?
      Hast Du da andere Erfahrungen?

      Mein Code:

      var
      aConnection : _Connection;
      begin
      try
      //Connection auf die DB setzen
      aConnection := CoConnection.create;
      aConnection.CursorLocation := adUseClient;
      aconnection.Set_ConnectionTimeout ( GeneralTimeout );
      aconnection.Set_CommandTimeout ( GeneralTimeout );
      aConnection.open ( swConnString, '', '', 0 );
      Result := aConnection;
      except
      on e:exception do begin
      showmessage ( 'DB Connection defekt'+#13+e.message );
      end;
      end;

      swConnString : Connectionstring auf die SQL Server 2000 Datenbank
      GeneralTimeout : Konstante für "meinen" timeout
      _connection stammt aus der importierten Typbibliothek von MDAC 2.7

      Die Idee war jetzt den timeout auf einen lächerlich kleinen Wert zu setzen z.B. 2 um das System sofort in einen timeout zu treiben. Man will ja mal sehen, was im schlimmsten Fall so geschieht. Aber nichts zu machen der timeout ist immer 30 auch wenn ich den Wert erhöhe ist er wieder 30.

      Bin ich wirklich alleine mit diesem Problem?????
      &#10

      Comment


      • #4
        >Bin ich wirklich alleine mit diesem Problem?????
        Ja bin ich...

        Ich habs gefunden. Man muss den SQL Server schon massiv unter Druck setzen, um in den timeout hinein zu kommen.
        Lediglich eine lange Abfrage scheint nicht ausreichend zu sein. Das System muss in einen Wartezustand kommen, dann erst wird der timeout ausgelöst.

        Jetzt klappts auch mit dem timeout.

        BYE BERN

        Comment

        Working...
        X