2012-04-05 8 views
1

Gibt es eine Möglichkeit, Abfrage-Arbeitsfortschritt von SQL Server zurückzugeben?SQL Server erhält Fortschritt

Zum Beispiel habe ich eine Prozedur gespeichert, die n Zeilen zurückgibt. Und ich muss wissen, wie viel Zeit es kostet, zu beenden.

Danke.

+4

Nicht wirklich - wie würde SQL Server im Voraus wissen, wie viele Zeilen ein bestimmter Aufruf zurückgibt? Um das heraus zu finden, müsste es den Aufruf tatsächlich ausführen ** - also hast du deine Anfrage schon erledigt ..... es gibt hier keine schwarze Magie oder Voodoo ..... SQL Server ** kann nicht wissen ** im Voraus, wie viel Zeit eine bestimmte Operation dauert - daher kann es nicht über den Fortschritt berichten, wirklich .... –

+0

Wie wäre es mit einem Umweg, wie die Zählung der Abfrage zuerst bekommen? Wäre es möglich, diese Nummer zu haben? – Louis

+0

Sad (. Es wäre sehr nützlich Funktion. Danke, werde ich ungefähre Zeit basierend auf Statistiken dann machen. – StNickolas

Antwort

2

Frage:

„Gibt es eine Möglichkeit Abfrage Arbeitsfortschritt von SQL Server zurückzukehren Zum Beispiel habe ich Prozedur gespeichert haben, die n Zeilen zurückgibt, und ich muss wissen, wie viele Zeit ist es verloren zu beenden?.. "

Antwort: Leider ist die Antwort NEIN, wenn Sie eine einzelne Abfrage zurückgeben. Innerhalb des Kontrollflusses von Transact-SQL oder einer gespeicherten Prozedur können Sie möglicherweise die Anzahl der verarbeiteten oder zurückgegebenen Zeilen mit der @@ rowcount -Variable oder einer benutzerdefinierten Variablen, die betroffene oder zurückgegebene Zeilen erfasst, zurückgeben. Wenn transact-sql einen Cursor verwendet (aus Leistungsgründen nicht empfohlen), können Sie nach der Erfassung eines COUNT der Gesamtzahl der zu verarbeitenden oder zurückzugebenden Zeilen eine Zeilenanzahl zurückgeben und anschließend eine Zählervariable nach deren Abschluss drucken Schleife.