Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Integracija podatkov in dostop do podatkov » Gonilnik WKL OData ODBC » Odpravljanje težav z gonilnikom OData ODBC » Access pri vsotah ali združitvah javi "ODBC--call failed"

Access pri vsotah ali združitvah javi "ODBC--call failed"

Poizvedba nad povezanimi tabelami gonilnika se konča z napako 3146 „ODBC–call failed“, medtem ko preproste poizvedbe nad istimi tabelami delujejo. Značilni primeri: poizvedba z vsotami („Sum“, „Count“, „Group By“), združitev dveh povezanih tabel, podpoizvedba.

Okolje

Microsoft Access in Access Runtime s povezanimi tabelami prek {Wkl OData}; prav tako vsaka druga aplikacija ODBC, ki pošilja take stavke.

Vzrok

Access vsote, skupine in združitve nad povezanimi tabelami pošlje gonilniku kot en stavek in jih ne izračuna sam, če gonilnik stavek zavrne (tudi kadar gonilnik ne javi skladnosti SQL). Tudi gonilnik ničesar ne izračuna lokalno: stavek prevede, posreduje ali zavrne:

StavekDeluje, če …
vsote, skupine, HAVING, DISTINCT nad eno tabelostoritev javi podporo za združevanje v skupine ($apply) ali obstaja naslov za lastne stavke
združitev dveh tabel, podpoizvedba, računanje med agregati (SUM(a) - SUM(b))obstaja naslov za lastne stavke

Če manjka oboje, gonilnik stavek zavrne s SQLSTATE 42000, Access pa prikaže samo 3146. Podatkovni prehod Wkl.Data.Gateway naslov navede vsakemu klicatelju, katerega pravilo navaja alias, dokler so vklopljeni pri aliasu preverjeni stavki (privzeto). Če prehod stavek zavrne, ker objekt, ki ga navaja, ni odobren, prispe 403 kot 28000, Access pa spet prikaže samo 3146.

Odprava

  1. Razlog preberite v sledenju gonilnika: v povezavi nastavite TRACEFILE= ali spremenljivko okolja WKL_ODATA_ODBC_TRACE, znova zaženite Access in ponovite poizvedbo. Če tam piše, da storitev ne podpira združevanja v skupine ali da stavka ni mogoče prevesti, nadaljujte z 2. korakom.
  2. Naj skrbnik storitve preveri, ali storitev od vašega klicatelja sprejema lastne stavke: pri podatkovnem prehodu Wkl.Data.Gateway, ali so vklopljeni pri aliasu preverjeni stavki in ali pravilo odobri alias in vsak objekt poizvedbe; glejte Nastavitev prepustnih poizvedb,
    1. korak. Če storitev naslov javi sama, na delovnem mestu ni treba ničesar spreminjati. Če povezave v datoteki Access PASSTHROUGH navajajo izrecno, ga mora navajati vsaka povezava v tej datoteki.
  3. Če storitev lastnih stavkov ne sprejema, poizvedbo preoblikujte: vsote nad eno tabelo delujejo tudi brez tega, če storitev podpira $apply; združitev ustvarite kot pogled v podatkovni zbirki in povežite pogled.
  4. Po spremembi storitve znova zaženite Access: Access uporablja eno povezavo za vsako vrednost DATABASE in podatke storitve prebere ob povezovanju.

Preverjanje

Ista poizvedba vrne vrstice. V sledenju je namesto zavrnitve zahteva z $apply= (združevanje v skupine) ali zahteva na naslov za lastne stavke (…/sql.json).

Sorodne teme

sl/wiki/data-conectivity/odata-odbc/troubleshooting/odbc-call-failed-on-totals-or-joins.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille