Síntomas
Suponga que usa un controlador ODBC sqlncli11. dll para obtener acceso a Microsoft SQL Server 2012 o a SQL Server 2014 en una aplicación. Al usar el cursor de servidor y la función SQLFetch/ SQLGetData para tener acceso a algunos datos binarios de objetos grandes (BLOB) en SQL Server, se produce un problema de rendimiento especialmente en el caso de tipos de datos grandes, como varbinary (Max) o VARCHAR (Max).
Causa
Este es un problema de diseño para la implementación de la función SQLFetch/ SQLGetData en el controlador ODBC de SQL Server 2012. Cuando la consulta usa cualquier curso de servidor, el controlador ODBC invoca sp_cursorfetch durante la implementación de SQLFetch , y el servidor envía todo el BLOB al cliente. Después, cuando se ejecute SQLGetData , sp_cursor devuelve todo el BLOB de nuevo. Esto afecta enormemente al rendimiento de tipos de datos grandes, como varbinary (Max) o VARCHAR (Max).
Resolución
Información de actualización acumulativa
La nueva implementación invoca sp_cursoroption para obtener TEXTPTR_ONLY antes de la sp_cursorfetchy, a continuación, invoca sp_cursoroption para devolverla a TEXTDATA antes de la sp_cursor. Esto puede mejorar el rendimiento. El problema se solucionó por primera vez en la siguiente actualización acumulativa de SQL Server.
Cada actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de seguridad incluidas en la actualización acumulativa anterior. Le recomendamos que descargue e instale las últimas actualizaciones acumulativas de SQL Server:
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".