„Der Dienst hat das Ergebnis nach N Zeilen gekürzt“
Eine Pass-Through-Abfrage oder eine Abfrage über verknüpfte Tabellen, die der Treiber an die Datenbank
durchreicht, zeigt zuerst Zeilen und bricht dann ab. Access meldet „ODBC-Aufruf fehlgeschlagen“, die
Ablaufverfolgung oder eine andere Anwendung zeigt SQLSTATE HY000 mit der Meldung „Der Dienst hat
das Ergebnis nach N Zeilen gekuerzt (Zeilenobergrenze des Dienstes); es ist unvollstaendig.“
Umgebung
Treiber ab Fassung 0.7.0, gegen einen Dienst mit einer Zeilenobergrenze, die er in
der Antwort mit "truncated": true anzeigt, etwa den Datendienst Wkl.Data.Gateway
(Gateway:Limits:MaxRows, in der Vorgabe 100 000 Zeilen, je Objekt einstellbar). Bis Fassung 0.6.0
lieferte der Treiber dieselbe gekürzte Menge ohne jede Meldung. Eine übersetzte Abfrage betrifft das nicht: Der
Datendienst hält seine Seiten kleiner als die Zeilenobergrenze, und der Treiber liest über Folgeseiten
weiter.
Ursache
Die Anweisung liefert mehr Zeilen, als der Dienst in einer Antwort zulässt. Der Dienst schickt die Zeilen bis zur Grenze und kennzeichnet die Antwort als gekürzt; das Kennzeichen steht hinter den Zeilen. Der Treiber gibt die gelieferten Zeilen weiter und meldet danach den Fehler, damit niemand mit einer unvollständigen Menge weiterarbeitet, die wie das ganze Ergebnis aussieht. Eine durchgereichte Anweisung kennt keine Folgeseiten, über die der Rest nachgeladen werden könnte.
Behebung
- Grenzen Sie die Anweisung ein, sodass sie weniger Zeilen liefert: eine Bedingung, eine Gruppierung oder eine Seite mit
ORDER BY … OFFSET … FETCH. - Liest die Anwendung eine einzelne Tabelle, lassen Sie den Treiber die Abfrage übersetzen statt durchzureichen: Eine übersetzte Abfrage liest das Ergebnis in Seiten nach (
@odata.nextLink), statt es in einer einzigen Antwort zu erwarten; siehe Unterstütztes SQL. - Braucht die Anwendung das ganze Ergebnis, lassen Sie beim Betreiber des Dienstes die Grenze für dieses Objekt oder für eigene Anweisungen anheben.