Announcement

Collapse
No announcement yet.

DoEvents für Stored Proce in TSQL

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

  • DoEvents für Stored Proce in TSQL

    Hallo,
    gibt es in TSQL irgendeine Funktion oder sys-procedure, die einen Effekt hat wie DoEvents in VB oder Application.ProcessMessages in Delphi?
    Bei längeren, rechenintensiven Prozeduren wird der Server lahmgelegt.
    Ich denke, wenn die Prozedur ab und zu gezielt Rechenzeit abgibt, läuft sie zwar etwas langsamer aber die anderen Tasks bekommen häufiger Rechenzeit.
    Vielen Dank für Infos.

  • #2
    Hi,
    nein, so einen Befehl gibt es nicht.

    Mir fallen da zwei Möglichkeiten ein:
    * Evtl. kannst Du die rechenintensive Procedure nur während der Zeit laufen lassen, wenn der Server sowieso idle ist (z.B. nachts )
    * Ab SQL Server 2008 gibt es einen sogenannten "Resource Governor" mit dessen Hilfe Du bestimmen kannst, dass eine bestimmte Datenbank-Verbindung z.B. nicht mehr als 50% der CPU in Beschlag nehmen darf.

    Gruß,
    Karsten

    Comment


    • #3
      Originally posted by Der Herr B View Post
      Bei längeren, rechenintensiven Prozeduren wird der Server lahmgelegt.
      Ich denke, wenn die Prozedur ab und zu gezielt Rechenzeit abgibt, läuft sie zwar etwas langsamer aber die anderen Tasks bekommen häufiger Rechenzeit.
      Eigentlich ist jeder SQL Server (ob nun von MS, Oracle oder MySQL) auf Multiuserzugriff ausgelegt und damit nicht durch einen einzigen Prozess lahm zu legen. Außer natürlich er läuft auf dem letzten Zahnfleisch, sprich der für den SQL Server verfügbare speicher ist sehr knapp bemessen so das das Betriebssystem bzw. der SQL-Server permanent am swappen ist.

      Comment


      • #4
        Vielen Dank für die Antworten!
        Dann muss mein Kunde eben nach 18:00 rechnen:-) Oder einen extra ServerRechner anschaffen, der sich nur um die SQL-Datenbanken kümmert und nicht auch noch um die WebAnwendungen...
        Schönes Wochenende!

        Comment


        • #5
          Hallo,

          es gibt den Befehl
          WAITFOR { DELAY 'time' | TIME 'time' }

          der das Ausführen von Anweisungen "warten" lässt.
          Wie gut es für Deinen Anwendungsfall funktioniert, kann ich nicht sagen, das habe ich mangels Bedarf noch nicht ausprobiert.

          Olaf
          Olaf Helper

          <Blog> <Xing>
          * cogito ergo sum * errare humanum est * quote erat demonstrandum *
          Wenn ich denke, ist das ein Fehler und das beweise ich täglich

          Comment

          Working...
          X