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
Analytics Platform System (PDW)
Important
Klient natywny SQL Servera (SNAC) nie jest dostarczany z:
- SQL Server 2022 (16.x) i nowsze wersje
- SQL Server Management Studio 19 i nowsze wersje
Program SQL Server Native Client (SQLNCLI lub SQLNCLI11) oraz starszy dostawca microsoft OLE DB dla programu SQL Server (SQLOLEDB) nie są zalecane w przypadku tworzenia nowych aplikacji.
W przypadku nowych projektów użyj jednego z następujących sterowników:
- Sterownik ODBC firmy Microsoft dla programu SQL Server
- Sterownik OLE DB firmy Microsoft dla programu SQL Server
W przypadku programu SQLNCLI dostarczanego jako składnik aparatu bazy danych programu SQL Server (wersje 2012–2019), proszę sprawdzić wyjątek cyklu wsparcia .
Niektóre funkcje ODBC mogą działać synchronicznie lub asynchronicznie. Aplikacja może umożliwić operacje asynchroniczne zarówno dla uchwytu instrukcji, jak i uchwytu połączenia. Jeśli opcja jest ustawiona dla uchwytu połączenia, wpływa na wszystkie uchwyty instrukcji na uchwytie połączenia. Aplikacja używa następujących instrukcji do włączania lub wyłączania operacji asynchronicznych:
SQLSetConnectAttr(hdbc, SQL_ATTR_ASYNC_ENABLE,
SQL_ASYNC_ENABLE_ON, SQL_IS_INTEGER);
SQLSetConnectAttr(hdbc, SQL_ATTR_ASYNC_ENABLE,
SQL_ASYNC_ENABLE_OFF, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_ASYNC_ENABLE,
SQL_ASYNC_ENABLE_ON, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_ASYNC_ENABLE,
SQL_ASYNC_ENABLE_OFF, SQL_IS_INTEGER);
Gdy aplikacja wywołuje funkcję ODBC w trybie synchronicznym, sterownik nie zwraca kontroli aplikacji, dopóki nie zostanie powiadomiona, że serwer ukończył polecenie.
Podczas działania asynchronicznego sterownik natychmiast zwraca kontrolę aplikacji, nawet zanim wyśle polecenie do serwera. Kierowca ustawia kod zwrotny na SQL_STILL_EXECUTING. Aplikacja może następnie wykonywać inne zadania.
Gdy aplikacja sprawdza zakończenie polecenia, wykonuje to samo wywołanie funkcji z tymi samymi parametrami do sterownika. Jeśli kierowca nie otrzymał jeszcze odpowiedzi od serwera, ponownie wróci SQL_STILL_EXECUTING. Aplikacja musi okresowo testować polecenie, aż kod zwrotny będzie czymś innym niż SQL_STILL_EXECUTING. Gdy aplikacja otrzyma inny kod zwrotny, nawet SQL_ERROR, może ustalić, że polecenie zostało zakończone.
Czasem komenda jest nieustanna przez długi czas. Jeśli aplikacja musi anulować polecenie bez oczekiwania na odpowiedź, może to zrobić, wywołując SQLCancel z tym samym uchwytem instrukcji co polecenie oczekujące. To jedyny moment, kiedy powinno się używać SQLCancel . Niektórzy programiści używają SQLCancel , gdy przetworzyli zestaw wyników w połowie i chcą anulować resztę zbioru wyników. SQLMoreResults lub SQLCloseCursor powinny być używane do anulowania pozostałej części nieoczekiwanego zbioru wyników, a nie SQLCancel.