Was ist die Begrenzung der Länge eines SqlCommand-Abfrage
Gibt es eine Begrenzung in der Länge einer Abfrage, SQL-Server verarbeiten kann?
Habe ich einen ganz normalen SqlCommand-Objekt, und übergeben Sie einen sehr langen select-Anweisung als string.
Die Abfrage scheint in Ordnung zu sein, wenn Sie laufen gegen eine SQL-Server 2005/2008-Motor aber nicht ausgeführt wird gegen eine SQL-Server-2000-Motor.
Habe ich keine Angaben zu den Fehlern da ich nur diese Informationen, 3. hand, aber meine Anwendung nicht so funktioniert wie erwartet. Ich könnte gehen, um die Mühe der Installation einer SQL Server 2000-Instanz, aber ich Frage mich, ob jemand hat eine schnelle. Ja, es gibt einen 4K-oder 8K-Grenze in SQL Server 2000, aber nicht in 2005 geben Antwort.
Ich bin mir bewusst, dass ich gespeicherte Prozeduren verwenden, aber nehmen wir an ich habe ein triftiger Grund für die nicht mit Ihnen 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
SqlServer 2000 4000 Zeichen Abfrage-limit für adhoc-Abfragen.
Können Sie die Zusammenfassung dieses in eine gespeicherte Prozedur?
Hier ist ein Gedanke:
SQLServer 2000 VARCHAR erlaubt bis zu 8000 Zeichen, so dass dies funktionieren könnte:
PSeudoCode:
ein must read für dynamische Abfragen... Der Fluch und Segen von Dynamischem SQL, ich sehr empfehlen Ihnen, es zu Lesen. Kann dir nicht helfen, aber es wird definitiv helfen Sie in der Zukunft..
Ein Zitat aus dem Artikel, nur für den Fall.
Ich habe laufen in eine 2k-Grenze für Abfragen ausführen, die gegen eine AS/400. Ich in der Regel gelang es, unter die 2k-Grenze, indem Sie alle whitespace - es macht die Abfrage nicht lesbar, aber es ist der einfachste Weg, um unter der Grenze.
In meiner eigenen Erfahrung, ich fand, dass, was auf den ersten schien eine SQLServer2000 Grenzwert für die Länge der queries, war tatsächlich (glauben Sie es oder nicht) nicht wirklich eine Grenze für die Länge einer Abfrage, aber, ist eine Begrenzung der Länge einer bestimmten ZEILE in der Abfrage.
Es war vor etwa einem Jahr, als ich lief in dieses, also aus der Spitze von meinem Kopf ich erinnere mich nicht, was das line-Länge war, aber Sie könnten versuchen, die Spaltung der großen Abfrage in den Zeilen von max Zeilenlänge von 64 Kb oder so ungefähr, und sehen, wie es geht. Meine Erinnerung ist, dass die Zeilenlänge begrenzen gewesen sein könnte, 64K, ob Sie es glauben oder nicht. Ich hatte diese wahnsinnig langen Abfrage (wurde erzeugt, indem ein sql-generator-Programm), wurde die Abfrage über 80K lange, und ich teilte es in der Hälfte in Notepad (d.h., ich lege einen Zeilenvorschub in den SQL-code an, über den Punkt auf halbem Weg --- aber ich habe sicher nicht zu Spalten, bis keine Worte), und dann klebte die ganze Sache in Query Analyzer den Befehl Fenster. Dann funktionierte es, nachdem Sie den Zeilenvorschub irgendwo in der Mitte, so dass jede der 2 Linien, die weniger als 64 Kb lang. Ich hoffe, das hilft.
Wenn nicht, versuchen, kleinere Leitungslängen. Ich bin mir sicher, dass wenn ich meine Abfrage zu dem Punkt, wo keine Linie innerhalb es, über eine bestimmte Länge, wird die gesamte Abfrage gearbeitet.
Nicht zu tun, weil von sql-injections. Dies aufzugeben, wenn die app-dynamisches sql kann manipuliert werden durch den Benutzer.
auch - zu prüfen, SP ' s, da die leichter zu pflegen und es hilft auch bei der sql-Injektion.