Farbschema: Riviera
Sie befinden sich hier: start » sl » Dokumentacija » Integracija podatkov in dostop do podatkov » WKL Database Gateway » Odpravljanje težav » 429 "Die Anfrage bindet zu viele Einzelwerte."

429 "Die Anfrage bindet zu viele Einzelwerte."

Zahteva za branje z dolgim pogojem je zavrnjena z 429 (sporočilo: zahteva veže preveč posameznih vrednosti), preden doseže podatkovno zbirko.

Okolje

Pogoji z veliko vrednostmi, na primer IN (…) iz Accessa prek gonilnika ali dolge verige pogojev z or.

Vzrok

SQL Server v parametriziranem stavku sprejme največ 2.100 parametrov (Microsoft: Maximum capacity specifications for SQL Server, „Parameters per stored procedure“); dva od njih zasede sp_executesql, prek katerega prehod pošlje vsak stavek. Za vrednosti klicatelja jih ostane 2.098. Prehod parametre prešteje vnaprej in zahtevo zavrne, namesto da bi pogoj skrajšal. Odgovor je 429 (meja presežena), tako kot pri drugih količinskih mejah prehoda, in ne 400: zahteva je veljavna, le presega zmogljivost enega stavka. Več kot 100 enakosti nad istim stolpcem v enem or prehod združi v en sam parameter; pri vsem drugem (veliko različnih stolpcev, primerjave z gt ali lt, iskanje po besedilu, kratke verige nad veliko stolpci) šteje vsaka vrednost posebej.

Odprava

  1. Pogoj oblikujte kot seznam vrednosti enega stolpca (Nummer eq 1 or Nummer eq 2 … oz. IN (…)); tedaj ga omejuje le še velikost telesa zahteve (MaxBodyBytes, privzeto 1 MB, kar je približno 36.000 kratkih številskih vrednosti).
  2. Pogoj nad veliko različnimi stolpci razdelite na več zahtev.
  3. Dolge pogoje pošljite v telesu (POST …/$query); gonilnik to stori sam.

Preverjanje

Zahteva odgovori 200 z enakim številom vrstic kot isti pogoj v podatkovni zbirki.

Sorodne teme

sl/wiki/data-conectivity/database-gateway/troubleshooting/429-too-many-values.txt · Zuletzt geändert: von Wolfgang van der Stille