6 Stimmen

SQL-Server: Maximale Anzahl der zurückzugebenden Datensätze

Wir haben RowCount um die Anzahl der zurückzugebenden oder zu beeinflussenden Datensätze festzulegen. Aber wir müssen dies jedes Mal vor der Ausführung der Sql-Anweisung festlegen. Ich bin auf der Suche nach einem Weg, um dies zu setzen, sobald meine Anwendung gestartet und so beeinflussen alle Abfragen über meine Anwendung ausführen.

Update

Ich möchte eine Strategie für eine Testversion mit begrenzten Datensätzen erreichen! Ich möchte nicht mit meinem aktuellen Code herumspielen und wünsche mir, dass die Datenbank die Anzahl der Datensätze, die im Ergebnis einer Abfrage zurückgegeben werden, irgendwie beschränkt! Eine Alternative könnte die Übergabe eines Parameters an jede Speicherprozedur sein, aber das gefällt mir wirklich nicht und ich suche nach einer anderen Strategie!

7voto

gbn Punkte 407102

Sie können TOP in Ihrem Code für alle Befehle parametrisieren

DECLARE @rows int
SET @row = ISNULL(@row, 2000000000)
SELECT TOP (@rows) ... FROM ..

Auf diese Weise können Sie TOP global für alle Ihre Abfragen definieren, z.B. indem Sie SQLCommand wickeln oder erweitern

SET ROWCOUNT ist keine sichere Option: Sie wirkt sich auf Zwischenergebnismengen aus und hat andere unvorhersehbare Auswirkungen. Außerdem ist sie teilweise veraltet und wird in I/U/D DML ignoriert: siehe MSDN

Die Verwendung von SET ROWCOUNT wird in der nächsten Version von SQL Server keine Auswirkungen auf DELETE-, INSERT- und UPDATE-Anweisungen haben

2voto

KM. Punkte 98297

Da Sie nicht erwähnen, welche Anwendungssprache Sie verwenden, kann ich Ihnen den Code nicht nennen, aber eine Wrapper-Funktion für eine Datenbankverbindung erstellen . Nachdem Sie eine Verbindung zur Datenbank hergestellt haben, geben Sie in dieser Funktion die SET ROWCOUNT n , machen n einen Parameter und fügen Sie die Logik hinzu, die Sie benötigen, um ihn variabel zu machen. Ich mache etwas Ähnliches mit CONTEXT_INFO, ich setze es in meiner Verbindungsfunktion.

Denken Sie daran, dass Sie überall in Ihrer Anwendung eine Verbindung zur Datenbank herstellen müssen (suchen und ersetzen), indem Sie diese Wrapper-Funktion verwenden, und dass Sie daher immer den Zeilenzähler eingestellt haben.

0voto

Akram Shahda Punkte 14305

Beim Starten der Anwendung, zurücksetzen RowCount durch Ausführen des folgenden Befehls:

command.CommandText = "SET ROWCOUNT 0;";

Wenn der spezifische Modus aktiviert ist, stellen Sie den RowCount auf den benötigten Wert, indem Sie den folgenden Befehl ausführen:

command.CommandText = "SET ROWCOUNT " + rowCount + ";";

Wenn der spezifische Modus deaktiviert ist, setzen Sie RowCount wieder.


Siehe SET ROWCOUNT (Transact-SQL)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X