Biblioteka kursorów ODBC

Dotyczy:sql ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Niektóre sterowniki ODBC obsługują tylko domyślne ustawienia kursora; te sterowniki nie obsługują również operacji kursorów pozycjonowanych, takich jak SQLSetPos. Biblioteka kursorów ODBC jest komponentem Microsoft Data Access Components (MDAC), służącym do implementacji kursorów blokowych lub statycznych na sterowniku, który normalnie ich nie obsługuje. Biblioteka kursorów implementuje także instrukcje pozycjonowane UPDATE i DELETE oraz SQLSetPos dla kursorów, które tworzy.

Biblioteka kursorów ODBC jest implementowana jako warstwa pomiędzy Menedżerem Sterowników ODBC a sterownikiem ODBC. Jeśli biblioteka kursorów ODBC zostanie załadowana, menedżer sterowników ODBC kieruje wszystkie polecenia związane z kursorem do biblioteki kursorowej zamiast do sterownika. Biblioteka kursorów implementuje kursor, pobierając cały zestaw wyników z podstawowego sterownika i buforując ten zbiór na kliencie. Korzystając z biblioteki kursorów ODBC, aplikacja jest ograniczona do funkcjonalności kursora w tej bibliotece; Żadne wsparcie dla dodatkowej funkcjonalności kursora w podstawowym sterowniku nie jest dostępne dla aplikacji.

Nie ma dużej potrzeby używania biblioteki kursorów ODBC z natywnym sterownikiem ODBC SQL Server Native Client, ponieważ sam sterownik obsługuje więcej funkcji kursora niż biblioteka kursorów ODBC. Jedynym powodem, dla którego używa się biblioteki kursorów ODBC ODBC w ramach biblioteki kursorów ODBC w SQL Server Native Client, jest to, że sterownik obsługuje kursory przez kursory serwera, a kursory serwera nie obsługują wszystkich instrukcji SQL. Za każdym razem, gdy zajdzie potrzeba statycznego kursora z procedurami przechowywanymi, partiami lub instrukcjami SQL zawierającymi COMPUTE, COMPUTE BY, FOR BROWSE lub INTO, rozważ użycie biblioteki kursorów ODBC. Jednak należy zachować ostrożność wobec biblioteki kursorów, ponieważ buforuje ona cały zestaw wyników na kliencie, co może zużywać dużą ilość pamięci i powodować wolną wydajność.

Aplikacja wywołuje bibliotekę kursora na zasadzie połączenia po połączeniu, używając SQLSetConnectAttr do ustawienia atrybutu SQL_ATTR_ODBC_CURSORS connection przed połączeniem ze źródłem danych. SQL_ATTR_ODBC_CURSORS jest ustawiony na jedną z trzech wartości:

SQL_CUR_USE_ODBC
Gdy ta opcja jest ustawiona za pomocą sterownika ODBC SQL Server Native Client, biblioteka kursorów ODBC nadpisuje natywne wsparcie kursorów sterownika ODBC sterownika SQL Server Native Client. Do połączenia można używać tylko typów kursorów obsługiwanych przez bibliotekę kursorów; Kursory serwera nie mogą być używane.

SQL_CUR_USE_DRIVER
Po ustawieniu tej opcji można użyć całego kursora natywnego dla sterownika ODBC klienta SQL Server. Biblioteka kursorów ODBC nie może być używana. Wszystkie kursory są zaimplementowane jako kursory serwera.

SQL_CUR_USE_IF_NEEDED
Gdy ta opcja jest ustawiona, efekt jest taki sam jak SQL_CUR_USE_DRIVER używany z natywnym sterownikiem ODBC SQL Server Native Client. Podczas połączenia Menedżer sterowników ODBC testuje, czy sterownik ODBC, do którego jest podłączony, obsługuje SQL_FETCH_PRIOR opcję SQLFetchScroll. Jeśli sterownik nie obsługuje tej opcji, Menedżer sterowników ODBC ładuje bibliotekę kursorów ODBC. Jeśli sterownik obsługuje tę opcję, Menedżer Sterowników ODBC nie ładuje biblioteki kursorów ODBC, a aplikacja korzysta z natywnego wsparcia sterownika. Ponieważ SQL Server natywny sterownik ODBC klienta obsługuje SQL_FETCH_PRIOR, menedżer sterowników ODBC nie ładuje biblioteki kursorów ODBC.

Biblioteka kursorów pozwala aplikacjom używać wielu aktywnych instrukcji na połączeniu, a także przewijanych i aktualizowanych kursorów. Biblioteka kursorów musi być załadowana, aby wspierać tę funkcjonalność. Użyj SQLSetConnectAttr , aby określić, jak biblioteka kursorów powinna być używana, oraz SQLSetStmtAttr , aby określić typ kursora, współbieżność i rozmiar wiersza.