Sintomas
Suponha que você use um driver ODBC sqlncli11. dll para acessar o Microsoft SQL Server 2012 ou o SQL Server 2014 em um aplicativo. Quando você usa o cursor do servidor e a função SQLFetch/ SQLGetData para acessar alguns dados binários grandes (BLOB) no SQL Server, um problema de desempenho ocorre especialmente para tipos de dados grandes, como varbinary (max) ou varchar (max).
Causa
Trata-se de um problema de design da implementação da função SQLFetch/ SQLGETDATA no driver ODBC do SQL Server 2012. Quando a consulta usa cursores de servidor, o driver ODBC invoca sp_cursorfetch durante a implementação SQLFetch , e o servidor envia todo o blob para o cliente. Em seguida, quando SQLGetData é executado, sp_cursor traz novamente todo o blob. Isso afeta bastante o desempenho de grandes tipos de dados, como varbinary (max) ou varchar (max).
Resolução
Informações de atualização cumulativa
A nova implementação invoca sp_cursoroption para obter TEXTPTR_ONLY antes da sp_cursorfetche, em seguida, invoca sp_cursoroption para colocá-la novamente em TextData antes do sp_cursor. Isso pode melhorar o desempenho. O problema foi corrigido primeiro na atualização cumulativa a seguir do SQL Server.
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Recomendamos que você baixe e instale as atualizações cumulativas mais recentes do SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".