Ознаки
Припустимо, що ви використовуєте драйвер ODBC sqlncli11. dll, щоб отримати доступ до Microsoft SQL Server 2012 або SQL Server 2014 у програмі. Якщо ви використовуєте курсор на сервері та функція Sqtfetch/ sqtgetdata , щоб отримати доступ до деяких БІНАРНИХ великих об'єктів (BLOB) даних у SQL Server, проблема продуктивності відбувається особливо для великих типів даних, таких як varbinary (Max) або varchar (Max).
Причина
Це проблема з розробкою для впровадження функції Sqtfetch/ sqtgetdata у драйвері ODBC SQL Server 2012. Коли в запиті використовуються будь-які курсори сервера, драйвер ODBC посилається sp_cursorfetch під час реалізації sqchfetch , а сервер надсилає весь BLOB-файл. Після цього, коли виконується функція Sqdgetdata , sp_cursor знову поверне все BLOB-значення. Це суттєво впливає на продуктивність для великих типів даних, таких як varbinary (Max) або varchar (Max).
Спосіб вирішення
Відомості про Сукупне оновлення
Нова реалізація посилається sp_cursoroption , щоб отримати TEXTPTR_ONLY перед sp_cursorfetch, а потім посилається на sp_cursoroption , щоб його було знову збережено до текстових даних перед sp_cursor. Це може підвищити продуктивність. Ця проблема була спочатку зафіксоване в цьому сукупному оновленні сервера SQL Server.
Кожне нове Сукупне оновлення для SQL Server містить усі поточні виправлення та всі виправлення системи безпеки, які були включені до попереднього сукупного оновлення. Радимо завантажити та інсталювати найновіші накопичувальне оновлення для сервера SQL Server:
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".