Symptomy

Załóżmy, że za pomocą sterownika ODBC SQLNCLI11. dll można uzyskać dostęp do programu Microsoft SQL Server 2012 lub SQL Server 2014 w aplikacji. W przypadku użycia kursora serwera i funkcji SQLFetch/ SQLGetData w celu uzyskania dostępu do danych dużych obiektów binarnych (BLOB) w programie SQL Server występuje problem z wydajnością, szczególnie w przypadku dużych typów danych, takich jak varbinary (max) lub varchar (max).

Przyczyna

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

Rozwiązanie

Informacje o aktualizacji zbiorczej

Nowa implementacja wywoła sp_cursoroption , aby uzyskać TEXTPTR_ONLY przed sp_cursorfetch, a następnie wywoła sp_cursoroption , aby ponownie TextData przed sp_cursor. Może to zwiększyć wydajność. Ten problem został po raz pierwszy rozwiązany w poniższej zbiorczej aktualizacji programu SQL Server.

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

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.