2009-08-18 9 views
1

Ist es möglich, eine Abfrage zu starten, die viel Zeit in Anspruch nimmt und den Fortschritt von der Benutzeroberfläche über Ajax überwacht?Beginn und Überwachung des Fortschritts bei lang laufenden SQL-Abfragen über Ajax

Ich überlegte, den Prozess als einmal ausgeführten Job zu starten, der sofort ausgeführt werden soll. Ich könnte die Ergebnisse in einer temporären Tabelle für den schnellen Abruf speichern, sobald sie abgeschlossen ist. Ich könnte auch die Laufzeit des Berichts protokollieren und diese auswerten, um die Laufzeit für den Fortschrittsbalken zu vergüten.

Ich benutze Microsoft SQL 2005 im Moment, aber ich bin bereit, zu anderen DBMS wie SQL 2008, MySQL, etc wenn nötig.

Antwort

0

Eine Idee, wenn der lang laufende Job eine andere Tabelle füllt.

Sie haben eine zweite Datenbankverbindung, wie viele Zeilen zu überwachen sind aus den Quellenzeilen verarbeitet und zeigen eine einfache „x Zeilen verarbeitet“ alle paar Sekunden

SELECT COUNT(*) FROM TargetTable WITH (NOLOCK) 

Wenn auch Sie eine Quellentabelle haben:

SELECT COUNT(*) FROM SourceTable WITH (NOLOCK) 

..then Sie „x von y Zeilen verarbeitet“

Grundsätzlich können Sie eine zweite Verbindung zu verwenden haben die ersten zu überwachen. Sie brauchen aber auch etwas zu messen ...

+0

das klingt nach der richtigen Idee. Danke für die Antwort. – Joshua