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.
- Aktualizacja zbiorcza 1 dla programu SQL Server 2014 z dodatkiem SP1
- Aktualizacja zbiorcza 7 dla programu SQL Server 2014
- Aktualizacja skumulowana 5 dla programu SQL Server 2012 z dodatkiem SP2
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:
- Najnowsza aktualizacja zbiorcza dla programu SQL Server 2014 z dodatkiem SP1
- Najnowsza aktualizacja zbiorcza dla programu SQL Server 2014
- Najnowsza aktualizacja zbiorcza dla programu SQL Server 2012 z dodatkiem SP2
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.