Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:sql Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Po połączeniu z instancją SQL Server, sterownik ODBC SQL Server Native Client obsługuje optymalizację wydajności dla kursorów tylko do przodu i do odczytu. Kursory tylko przewijania do przodu są implementowane wewnętrznie przez sterownik i serwer w sposób bardzo podobny do domyślnych zestawów wyników. Poza wysoką wydajnością, kursory tylko do przewijania do przodu mają także następujące cechy:
SQLGetData nie jest obsługiwany. Kolumny zestawu wyników muszą być powiązane ze zmiennymi programowymi.
Serwer automatycznie zamyka kursor, gdy wykryto jego koniec. Aplikacja musi nadal wywoływać SQLCloseCursor lub SQLFreeStmt(SQL_CLOSE), ale sterownik nie musi wysyłać żądania zamknięcia do serwera. To oszczędza podróż w obie strony przez sieć do serwera.
Aplikacja prosi o kursory tylko przewijania do przodu, używając atrybutu instrukcji specyficznego dla sterownika SQL_SOPT_SS_CURSOR_OPTIONS. Po ustawieniu na SQL_CO_FFO kursory tylko przewijania do przodu są włączone bez automatycznego pobierania. Po ustawieniu na SQL_CO_FFO_AF opcja automatycznego pobierania jest również włączona. Więcej informacji o autofetch można znaleźć w artykule Using Autofetch with ODBC Cursors.
Kursory tylko przewijania do przodu z automatycznym pobieraniem mogą być używane do pobrania niewielkiego zestawu wyników przy jednej podróży do serwera w obie strony. W tych krokach n to liczba wierszy, które mają zostać zwrócone:
Ustaw SQL_SOPT_SS_CURSOR_OPTIONS na SQL_CO_FFO_AF.
Ustaw SQL_ATTR_ROW_ARRAY_SIZE na n + 1.
Przypisz kolumny wyników do tablic o n + 1 elementach (dla bezpieczeństwa, jeśli faktycznie pobierane są n + 1 wierszy).
Otwórz kursor za pomocą SQLExecDirect lub SQLExecute.
Jeśli status zwrotu jest SQL_SUCCESS, wywołaj SQLFreeStmt lub SQLCloseCursor , aby zamknąć kursor. Wszystkie dane dla wierszy będą znajdować się w powiązanych zmiennych programowych.
W tych krokach SQLExecDirect lub SQLExecute wysyła żądanie otwarcia kursora z włączoną opcją automatycznego pobierania. Na to pojedyncze żądanie od klienta serwer:
Otwiera kursor.
Buduje zbiór wyników i wysyła wiersze do klienta.
Ponieważ rozmiar wiersza został ustawiony na 1 więcej niż liczba wierszy w zestawie wyników, serwer wykrywa koniec kursora i zamyka kursor.