Announcement

Collapse
No announcement yet.

ExecuteReader TimeOut Problem

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

  • ExecuteReader TimeOut Problem

    Hallo,

    ich habe eine Datenbank Anwendung Programmiert, die mir alle Informationen bezüglich meiner Datenbank ausgibt. Nun will ich aber einige Prozeduren ausführen.

    Eine der Prozeduren erzeugt einen Kalender. Ich übergebe 2 Variablen
    @anfangsdatum und @enddatum.

    Wenn ich dann die Prozedure start und folgende werte übergeben
    @anfangsdatum 01.01.2005
    @enddatrum 31.12.2006

    Dann Funktioniert das auch.

    Gebe ich aber als @enddatum den 31.12.2009 oder hör ein dann kommt ein TimeOut bei der Codezeile

    Code:
    dr = datenbank.ExecuteReader()
    Die Fehlermeldung lautet wie folgt:

    Code:
    Timeout ist abgelaufen. Das Zeitlimit wurde vor dem Beenden des Vorgangs überschritten oder der Server reagiert nicht
    Also ich möchte gerne wissen wie ich den TimeOut höhrstellen kann?

    Ich kann dazu nur noch sagen, das es nicht am SQL Server liegt weil, ich führe die Prozedure auf dem SQL Server aus und er brauch zwar 2 Minuten um mir den Kalender zu Erstellen aber er schafft es! Das TimeOut vom SQL Server leigt bei 10 Minuten.

    Also auf dem SQL Server geht die Prozedure nur nicht mit Visual Basic.

    Ich hoffe man kann mir Helfen.

    Wenn ch im SQL Server eine Jahres Differenz von 15 Jahre eingebe ( 2005- 2020) brauch der SQL Server schon 3 Minuten und 30 Sekunden

    mfg

    Seby
    Zuletzt editiert von Seby-Deluxe; 08.05.2007, 15:11.

  • #2
    So wie ich das sehe ist deine Variable "datenbank" ein SQLclient.SQLCommand oder ähnliches. Unter .NET müsstest du bevor du datenbank.ExecuteReader() ausführst den Timeout einstellen:

    z.B.

    Code:
    datenbank.CommandTimeout = 600

    Comment


    • #3
      Hallo tipsybroom

      JO vielen Dank.

      Nachdem ich den Post geschrieben habe, ging mit ein Licht auf ^^

      ich habe den SQLCommand eingetippt und dann den "." Punkt und hab mir mal alle möglichkeiten angeguckt. und da stand dann auf einmal CommandTimeout und so konnte ich den Teime Out hochstellen.

      Aber trozdem Vielen Dank.

      Nun hab ich noch ein Problem,

      Ich starte die Procedure per VB und das dauert bei einer Jahresdifferenz von 15 Jahren ja ca. 3 Minuten. Das VB Programm führt diese sache Ordnungsgemäß durch. Aber...

      In diesen 3 Minuten kommt beim erneuten Klicken auf die Form (egal wohin) oben im Form Namen
      (Keine Rückmeldung vom Programm)

      Nachdem die 3 Minuten abgelaufen sind Funktioniert das Programm weiterhin einwandfrei.

      Nun meine Frag:

      Gibt es eine Möglichkeit dem VB Programm zu sagen , dass es eine Art rückmeldung an Windows liefter, damit es zu diesem Fehler nicht kommt?

      so das ich weiter mit dem Programm arbeiten kann wärend die Procedure läuft?

      mfg

      Seby

      Comment


      • #4
        Hallo Seby-Deluxe,

        solch zeitintensive Operationen gehören definitiv nicht in den GUI-Thread.

        Erstelle einen WorkingThread, der die Datenbankoperation ausführt. Ein WorkerThread besitzt auch eine asynchrone Rückantwortmöglichkeit.

        Beachte aber folgendes: Eine Aktualisierung der Form aus einem anderen Thread heraus funktioniert nur mittels P/Invoke oder BeginInvoke.

        Viele Grüße
        _ntr_

        Comment

        Working...
        X