Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Délka dat je bajtová délka dat, jak by byla uložena ve vyrovnávací paměti dat aplikace, nikoli tak, jak je uložena ve zdroji dat. Tento rozdíl je důležitý, protože data jsou často uložená v různých typech v vyrovnávací paměti dat než ve zdroji dat. Takže pro data odesílaná do zdroje dat se jedná o bajtovou délku dat před převodem na typ zdroje dat. Pro data načtená ze zdroje dat se jedná o bajtovou délku dat po převodu na typ vyrovnávací paměti dat a před provedením jakéhokoli zkrácení.
U dat s pevnou délkou, jako je celé číslo nebo struktura kalendářních dat, je délka bajtů dat vždy velikost datového typu. Obecně platí, že aplikace přidělují vyrovnávací paměť dat o velikosti datového typu. Pokud aplikace přidělí menší vyrovnávací paměť, důsledky jsou nedefinovány, protože ovladač předpokládá, že velikost vyrovnávací paměti odpovídá velikosti datového typu a data nezkracuje, aby se vešla do menší vyrovnávací paměti. Pokud aplikace přidělí větší vyrovnávací paměť, místo navíc se nikdy nepoužije.
U dat s proměnlivou délkou, jako jsou znaková nebo binární data, je důležité si uvědomit, že délka bajtu dat je oddělená a často se liší od délky bajtu vyrovnávací paměti. Vztah těchto dvou délek je popsán v části Vyrovnávací paměti . Pokud je délka bajtu dat větší než délka bajtu vyrovnávací paměti, ovladač zkrátí načtená data na délku bajtu vyrovnávací paměti a vrátí SQL_SUCCESS_WITH_INFO s SQLSTATE 01004 (data zkrácena). Vrácená délka bajtu je však délka nerušených dat.
Předpokládejme například, že aplikace přidělí 50 bajtů pro binární datovou vyrovnávací paměť. Pokud má ovladač vrátit 10 bajtů binárních dat, vrátí těchto 10 bajtů ve vyrovnávací paměti. Bajtová délka dat je 10 a délka bajtu vyrovnávací paměti je 50. Pokud má ovladač 60 bajtů binárních dat, která se mají vrátit, zkrátí data na 50 bajtů, vrátí tyto bajty ve vyrovnávací paměti a vrátí SQL_SUCCESS_WITH_INFO. Bajtová délka dat je 60 (délka před zkrácením) a délka bajtu vyrovnávací paměti je stále 50.
Pro každý sloupec, který je zkrácený, se vytvoří diagnostický záznam. Vzhledem k tomu, že vytvoření těchto záznamů a zpracování těchto záznamů v aplikaci nějakou dobu trvá, může zkrácení snížit výkon. Aplikace se obvykle může tomuto problému vyhnout přidělením dostatečně velkých vyrovnávacích pamětí, i když to nemusí být možné při práci s dlouhými daty. Když dojde ke zkrácení dat, aplikace může někdy přidělit větší vyrovnávací paměť a znovu načíst data; to není pravdivé ve všech případech. Pokud dojde ke zkrácení při získávání dat s voláními SQLGetData, aplikace nemusí volat SQLGetData pro data, která již byla vrácena. Pro další informace viz Získání dlouhých dat.