+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

SQL-Syntaxfehler bei Verwendung von ORDER BY Statements in eigenen SQL-Abfragen

reportserver
(combit Team) #1
Gilt ab Report Server 3
Seit dem Report Server 3 kann in den SQL-Abfragen von Einzelabfragen der SQL-Datenquellen keine eigene Sortierung mehr direkt per ORDER BY Statement angegeben werden. Derartig konfigurierte Datenquellen liefern beim Ausführen der Berichtsvorlage einen SQL-Syntaxfehler. Dieser Umstand wird auch bei der Installation als Hinweis angezeigt.

Ursache:
In der Version 3 des Report Servers wurde die Möglichkeit geschaffen eigene benutzerdefinierte Relationen zwischen Tabellen zu konfigurieren, um hierarchische Strukturen in Berichten weiter zu individualisieren. Hierzu war es jedoch notwendig eine strukturelle Änderung bei der Verarbeitung von eigenen SQL-Abfragen vorzunehmen, so dass aus technischen Gründen die eigenen definierten SQL-Abfragen in sogenannte Sub-Queries gekapselt werden müssen.
An die Datenbank wurde bisher eine Abfrage in der Form "SELECT * FROM ([Ihre SQL-Eingabe])" gesendet. Wenn in der SQL-Syntax der Einzelabfrage ein ORDER BY Statement enthalten war, wurde dieses Statement beim späteren Ausführen auch Teil der Sub-Query. Da jedoch ORDER BY Statements in Sub-Queries nicht erlaubt sind, kommt es zu einem SQL-Syntaxfehler.

Lösung:
Um nun das ursprüngliche Verhalten wiederherzustellen, so dass weiterhin wie gewohnt Sortierungen in den Berichten verwendet werden können, sind lediglich kleinere Anpassungen notwendig:
  • In den eigenen SQL-Abfragen müssen die ORDER BY Statements entfernt werden
  • Die betreffenden Berichtsvorlagen müssen im Report Server Designer angepasst werden, um dort für jede einzelne Tabelle die Sortierung auszuwählen (in den Eigenschaften des jeweiligen Tabellen-Objekts)
Aufgrund dieser Anpassungen ergänzt dann der Report Server die SQL-Abfrage automatisch um das entsprechende ORDER BY Statement, sodass die Sortierungen dennoch datenbankseitig durchgeführt werden und somit keinerlei Performance-Einbußen zu befürchten sind.
IDKBAD001321 KBAD001321