KB3041859 — POPRAWKA: Podczas korzystania ze sterownika ODBC sqlncli11.dll celu uzyskania dostępu do SQL Server w aplikacji występuje problem z wydajnością

Dotyczy
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Objawy

Załóżmy, że uzyskujesz dostęp do programu Microsoft SQL Server 2012 lub SQL Server 2014 w aplikacji za pomocą sterownika ODBC firmy sqlncli11.dll. W przypadku używania kursora serwera i funkcji SQLFetch/ SQLGetData w celu uzyskania dostępu do niektórych danych obiektu BLOB (Binary Large Object) w programie SQL Server występuje problem z wydajnością, zwłaszcza w przypadku dużych typów danych, takich jak varbinary (max) lub varchar (max).

Przyczyna

Jest to problem projektowy podczas implementacji funkcji SQLFetch/ SQLGetData w sterowniku ODBC programu SQL Server 2012. Gdy kwerenda używa dowolnych kursorów serwera, sterownik ODBC wywołuje sp_cursorfetch podczas implementacji funkcji SQLFetch, a serwer wysyła cały obiekt BLOB do klienta. Następnie, gdy SQLGetData jest wykonywana, sp_cursor ponownie wprowadza wszystkie obiekty BLOB. Ma to znaczny wpływ na wydajność w przypadku dużych typów danych, takich jak varbinary (max) lub varchar (max).

Rozwiązanie

Informacje o aktualizacji zbiorczej

Nowa implementacja wywołuje sp_cursoroption w celu uzyskania TEXTPTR_ONLY przed sp_cursorfetch, a następnie wywołuje sp_cursoroption, aby umieścić je z powrotem w TEXTDATA przed sp_cursor. Może to poprawić wydajność.

Ten problem został po raz pierwszy rozwiązany w następującej aktualizacji zbiorczej programu SQL Server.

Zalecenie: zainstalowanie najnowszej aktualizacji zbiorczej dla programu SQL Server

Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji skumulowanej. Zalecamy pobranie i zainstalowanie najnowszych aktualizacji zbiorczych dla programu SQL Server:

      

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.