Simptome
Să presupunem că utilizați un driver ODBC sqlncli11. dll pentru a accesa Microsoft SQL Server 2012 sau SQL Server 2014 într-o aplicație. Atunci când utilizați cursorul Server și funcția SQLFetch/ SQLGetData pentru a accesa unele date obiect binar mare (BLOB) în SQL Server, se produce o problemă de performanță mai ales pentru tipurile de date mari, cum ar fi varbinary (Max) sau varchar (Max).
Cauză
Aceasta este o problemă de proiectare pentru implementarea funcției SQLFetch/ SQLGETDATA în driverul ODBC SQL Server 2012. Atunci când interogarea utilizează orice cursoare de server, driverul ODBC invocă sp_cursorfetch în timpul implementării SQLFetch , iar serverul trimite toată blob-ul clientului. Apoi, când SQLGetData este executat, sp_cursor aduce din nou toată blob-ul. Acest lucru afectează semnificativ performanța pentru tipurile mari de date, cum ar fi varbinary (Max) sau varchar (Max).
Rezolvare
Informații despre actualizarea cumulativă
Noua implementare invocă sp_cursoroption pentru a obține TEXTPTR_ONLY înaintea sp_cursorfetch, apoi invocă sp_cursoroption pentru a o readuce la TextData înainte de sp_cursor. Acest lucru poate îmbunătăți performanța. Problema a fost remediată pentru prima dată în următoarea actualizare cumulativă de SQL Server.
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Vă recomandăm să descărcați și să instalați cele mai recente actualizări cumulative pentru SQL Server:
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.