Fügen Sie in SQL Server 2008 und höher COUNT(*)
hinzu OVER ()
als einer der Spaltennamen in Ihrer Abfrage und wird mit der Gesamtzahl der zurückgegebenen Zeilen gefüllt.
Es wird in jeder einzelnen Zeile wiederholt, aber zumindest der Wert ist verfügbar.
Der Grund, warum viele andere Lösungen nicht funktionieren, ist, dass Sie bei sehr großen Ergebnismengen die Gesamtsumme erst nach dem Iterieren aller Zeilen kennen, was in vielen Fällen nicht praktikabel ist (insbesondere bei sequentiellen Verarbeitungslösungen). Diese Technik gibt Ihnen die Gesamtzahl nach dem Aufrufen des ersten IDataReader.Read()
, zum Beispiel.
select COUNT(*) OVER () as Total_Rows, ... from ...