Симптоми
Предположите, че използвате ODBC драйвер за sqlncli11. dll за достъп до Microsoft SQL Server 2012 или SQL Server 2014 в приложение. Когато използвате курсора на сървъра и функцията SQLFetch/ SQLGetData , за да получите достъп до някои двоични данни за голям обект (Blob) в SQL Server, възниква проблем с производителността, особено за големи типове данни, като varbinary (max) или VARCHAR (max).
Причина
Това е проблем с дизайна за изпълнение на функцията SQLFetch/ SQLGetData в SQL Server 2012 ODBC Driver. Когато заявката използва всеки сървър курсори, ODBC драйверът се позовава sp_cursorfetch по време на изпълнение на SQLFetch и сървърът изпраща цялото петно на клиента. След това, когато SQLGetData бъде изпълнен, SP_CURSOR носи всички Blob отново. Това значително оказва влияние върху производителността за големи типове данни, като varbinary (max) или VARCHAR (max).
Решение
Информация за сборна актуализация
Новото прилагане извиква sp_cursoroption , за да получи TEXTPTR_ONLY преди sp_cursorfetch, и след това извиква sp_cursoroption , за да го върне на TEXTDATA преди sp_cursor. Това може да подобри представянето. Проблемът е коригиран първо в следващата сборна актуализация на SQL Server.
Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Препоръчваме ви да изтеглите и инсталирате последните сборни актуализации за SQL Server:
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".