Omejitve in lastnosti (referenca)
Omejitve
- Imena zbirk podatkov klicatelju niso vidna. Klicatelj navede odobreno ime aliasa; razrešitev se zgodi v prehodu.
- Filtrirajte v prehodu, ne v odjemalcu. Izbira, filter, razvrščanje in razdelitev na strani spadajo v poizvedbo. Prehod na zahtevo vrne največ eno okno do svoje zgornje meje; kdor naloži celotno tabelo, da bi jo filtriral v odjemalcu, potrebuje toliko zahtev, kolikor ima tabela oken, in prenese vsako vrstico, ki jo nato zavrže.
- Brez ponavljanja. Prekoračitev časovne omejitve pri klicanju ne pomeni, da ni bilo nič zapisano – odjemalec je nehal čakati, transakcija pa se je izvajala naprej. To velja za
TimedOutin enako zaUnavailable, če se je povezava med klicem prekinila ali je odjemalec obupal poWriteTimeout. Samodejni drugi poskus bi ponovil morebiti že potrjeno transakcijo. Podatkovni prehod sicer podpira glavoIdempotency-Key, s katero ponovitev dobi shranjeni prvi odgovor; odjemalec je ne pošilja. Razlog: prehod te odgovore hrani samo deset minut in samo v delovnem pomnilniku. Po ponovnem zagonu prehoda ali daljšem premoru bi se ponovitev vendarle izvedla še enkrat, klicatelj pa tega ne bi mogel opaziti. Ali in kako se ponavlja, zato odloči aplikacija, ki ve, ali se njen klic sme izvesti dvakrat. - Okrnjeni rezultati procedure. Če procedura vrne več vrstic, kot jih za njen alias dovoljuje omejitev števila vrstic prehoda (
MaxRows), prehod rezultat okrni. Odjemalec o tem zapiše opozorilo s korelacijskim identifikatorjem v dnevnik aplikacije;GatewayRoutineResultza to nima oznake. Procedura, ki vrača velike količine podatkov, zato sodi v funkcijo ali pogled, ki se bere po oknih. Pri branju do okrnitve ne pride, ker prehod nikoli ne oblikuje okna, večjega od omejitve. - Preverjanje pripadnosti množici (
Membership) se prenese kot veriga enakosti, ker sintaksa prenosa ne pozna operatorja za množice. Rezultat je enak. Če naslov zaradi tega postane daljši odMaxUrlLength, bralna zahteva svoje možnosti pošlje v telesu, prehod pa dolgo verigo na enem stolpcu poda podatkovni zbirki kot en sam parameter. Koliko vrednosti sme vsebovati preverjanje pripadnosti, določa paket specifikacije vmesnika (GatewayFilter.Membership.MaxValues); kako veliko sme biti telo, določa prehod. - Vrednosti, za katere ni dogovorjene oblike prenosa – naštevanja, zaporedja bajtov, poslovni objekti –, se zavrnejo, namesto da bi se z
ToString()pretvorile v niz, ki je videti verjeten in ne zadene ničesar.
Dve lastnosti, ki lahko presenetita
Skupno število lahko manjka. GatewayPage.TotalCount je null, če ni nihče štel. To ni isto
kot 0. Če manjkajočo vrednost obravnavate kot ničlo, seznamu sporočite, da ni ničesar za nalaganje –
čeprav podatki dokazano obstajajo in brez kakršnega koli sporočila o napaki. Če štetja niste zahtevali,
nadaljnje nalaganje upravljajte prek HasMorePotentially: polno okno ima lahko nadaljevanje, kratko je
konec.
Natančen znesek se prenese kot besedilo. SQL Server postavlja float nad decimal (Microsoft:
Data type precedence):
parameter s plavajočo vejico proti decimalnemu stolpcu povzroči pretvorbo stolpca, zaradi česar se
indeks ne more uporabiti, zadnja števka pa se lahko spremeni. Besedilo je pod vsakim številskim
tipom, zato se pretvori parameter – natanko v tip stolpca. Cela števila v obsegu long ostanejo števila, ker
bi bila tam draga ravno pretvorba; večji ulong se prenese kot besedilo.