Sümptomid
Oletagem, et kasutate rakenduses Microsoft SQL Server 2012 või SQL Server 2014 juurdepääsuks sqlncli11. dll ODBC draiverit. Kui kasutate serveri kursorit ja funktsiooni SQLFetch/ SQLGetData , pääsete juurde mõnele SQL serveri binaarse suure objekti (blob) andmetele, ilmneb jõudluse probleem eriti suurte andmetüübid (nt muutuvpikkusega kahendandmed (max) või muutuvpikkusega Tärkandmed (max)).
Põhjus
See on SQL Server 2012 ODBC-draiveri funktsiooni SQLFetch/ SQLGetData rakendamiseks mõeldud kujunduse probleem. Kui päring kasutab mis tahes serveri kursorit, viitab ODBC draiver SQLFetch rakendamise ajal sp_cursorfetch ja server saadab kliendile kogu blob-i. Siis, kui SQLGetData täidetakse, sp_cursor toob uuesti kogu Bloobivahemälu. See mõjutab oluliselt suurte andmetüübid (nt muutuvpikkusega kahendandmed (max) või muutuvpikkusega Tärkandmed (max)) jõudlust.
Lahendus
Kumulatiivse värskenduse teave
Uus rakendamine tugineb sp_cursoroption TEXTPTR_ONLY hankimiseks sp_cursorfetchleja seejärel viitab sp_cursoroption , et viia see tagasi TextData enne sp_cursor. See võib jõudlust parandada. Probleem parandati esmakordselt SQL serveri järgmises koondvärskenduses.
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Soovitame teil alla laadida ja installida kumulatiivseid värskendusi SQL serveri jaoks:
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.