Príznaky
Predpokladajme, že používate ovládač ODBC sqlncli11. dll na prístup k serveru Microsoft SQL Server 2012 alebo SQL Server 2014 v aplikácii. Keď použijete kurzor servera a SQLFetch/ SQLGetData (funkcia) na prístup k niektorým údajom binárneho veľkého objektu (BLOB) na serveri SQL Server, problém s výkonom sa vyskytuje najmä v prípade veľkých typov údajov, ako je napríklad varbinárne (max) alebo VARCHAR (max).
Príčina
Toto je problém s návrhom na implementáciu funkcie SQLFetch/ SQLGetData v ovládači ODBC SQL Server 2012. Keď dotaz použije akékoľvek kurzory na serveri, ovládač ODBC vyvolá sp_cursorfetch počas implementácie SQLFetch a server odošle všetok objekt BLOB klientovi. Keď sa potom SQLGetData spustí, sp_cursor znova zobrazí všetok objekt BLOB. Významne to ovplyvňuje výkon veľkých typov údajov, ako je napríklad varbinárne (max) alebo VARCHAR (max).
Riešenie
Kumulatívna aktualizácia informácií
Nová implementácia vyvolá sp_cursoroption získať TEXTPTR_ONLY pred sp_cursorfetcha potom vyvolá sp_cursoroption , aby ho vrátil do TextData pred sp_cursor. Môže to zlepšiť výkon. Tento problém bol najskôr vyriešený v nasledujúcej kumulatívnej aktualizácii SQL servera.
Každá nová Kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej kumulatívnej aktualizácie. Odporúčame, aby ste si stiahli a nainštalovali najnovšie kumulatívne aktualizácie pre SQL Server:
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.