Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Important
SQL Server Native Client (SNAC) wordt niet geleverd met:
- SQL Server 2022 (16.x) en latere versies
- SQL Server Management Studio 19 en latere versies
De SQL Server Native Client (SQLNCLI of SQLNCLI11) en de verouderde Microsoft OLE DB-provider voor SQL Server (SQLOLEDB) worden niet aanbevolen voor de ontwikkeling van nieuwe toepassingen.
Gebruik een van de volgende stuurprogramma's voor nieuwe projecten:
Voor SQLNCLI die als onderdeel van SQL Server Database Engine (versies 2012 tot en met 2019) wordt geleverd, raadpleegt u deze uitzondering voor de levenscyclus van ondersteuning.
Sommige ODBC-functies kunnen zowel synchroon als asynchroon werken. De applicatie kan asynchrone bewerkingen inschakelen voor zowel een statementhandle als een verbindingshandle. Als de optie is ingesteld voor een verbindingshandvat, beïnvloedt dit alle instructiehandvaten op het verbindingshandvat. De applicatie gebruikt de volgende statements om asynchrone bewerkingen in of uit te schakelen:
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);
Wanneer een applicatie een ODBC-functie in synchrone modus aanroept, geeft de driver de controle niet terug aan de applicatie totdat deze wordt geïnformeerd dat de server het commando heeft voltooid.
Bij asynchroon werken geeft de driver onmiddellijk de controle terug aan de applicatie, zelfs voordat het commando naar de server wordt gestuurd. De chauffeur zet de retourcode op SQL_STILL_EXECUTING. De applicatie kan dan ander werk uitvoeren.
Wanneer de applicatie test op voltooiing van het commando, doet het dezelfde functieaanroep met dezelfde parameters naar de driver. Als de driver nog geen antwoord van de server heeft ontvangen, zal hij opnieuw SQL_STILL_EXECUTING teruggeven. De applicatie moet het commando periodiek testen totdat de returncode iets anders is dan SQL_STILL_EXECUTING. Wanneer de applicatie een andere retourcode ontvangt, zelfs SQL_ERROR, kan het bepalen dat het commando is voltooid.
Soms blijft een commando lange tijd uitstaan. Als de applicatie het commando moet annuleren zonder op een antwoord te wachten, kan dit gedaan worden door SQLCancel aan te roepen met dezelfde instructiehandle als het openstaande commando. Dit is de enige keer dat SQLCancel gebruikt zou moeten worden. Sommige programmeurs gebruiken SQLCancel wanneer ze halverwege een resultaatset hebben verwerkt en de rest van de resultaatset willen annuleren. SQLMoreResults of SQLCloseCursor moet worden gebruikt om de rest van een openstaande resultaatset te annuleren, niet SQLCancel.