SQLDisconnect-Funktion

Konformität
Eingeführte Version: ODBC 1.0-Standards Compliance: ISO 92

Zusammenfassung
SQLDisconnect schließt die Verbindung, die einem bestimmten Verbindungshandle zugeordnet ist.

Syntax

  
SQLRETURN SQLDisconnect(  
     SQLHDBC     ConnectionHandle);  

Argumente

ConnectionHandle
[Eingabe] Verbindungshandle.

Gibt zurück

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE oder SQL_STILL_EXECUTING.

Diagnose

Wenn SQLDisconnect SQL_ERROR oder SQL_SUCCESS_WITH_INFO zurückgibt, kann ein zugeordneter SQLSTATE-Wert abgerufen werden, indem SQLGetDiagRec mit einem HandleType von SQL_HANDLE_DBC und einem Handle von ConnectionHandle aufgerufen wird. In der folgenden Tabelle sind die SQLSTATE-Werte aufgeführt, die häufig von SQLDisconnect zurückgegeben werden, und die einzelnen Werte werden im Kontext dieser Funktion erläutert. die Notation "(DM)" steht vor den Beschreibungen von SQLSTATEs, die vom Treiber-Manager zurückgegeben werden. Der Rückgabecode, der jedem SQLSTATE-Wert zugeordnet ist, ist SQL_ERROR, sofern nicht anders angegeben.

SQLSTATE Fehler BESCHREIBUNG
01000 Allgemeine Warnung Treiberspezifische Informationsmeldung. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
01002 Verbindungsfehler Während der Trennung ist ein Fehler aufgetreten. Die Trennung war jedoch erfolgreich. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
08003 Verbindung nicht geöffnet (DM) Die im Argument ConnectionHandle angegebene Verbindung war nicht geöffnet.
25000 Ungültiger Transaktionsstatus Für die durch das Argument ConnectionHandle angegebene Verbindung wurde eine Transaktion ausgeführt. Die Transaktion bleibt aktiv.
HY000 Allgemeiner Fehler Es ist ein Fehler aufgetreten, für den kein spezifischer SQLSTATE-Wert vorhanden war und für den keine implementierungsspezifische SQLSTATE definiert wurde. Die von SQLGetDiagRec im *MessageText-Puffer zurückgegebene Fehlermeldung beschreibt den Fehler und seine Ursache.
HY001 Fehler bei der Speicherbelegung Der Treiber konnte keinen Arbeitsspeicher zuordnen, der für die Unterstützung der Ausführung oder Fertigstellung der Funktion erforderlich ist.
HY008 Vorgang abgebrochen Die asynchrone Verarbeitung wurde für ConnectionHandle aktiviert. Die Funktion wurde aufgerufen, und bevor die Ausführung der SQLCancelHandle-Funktion für connectionHandle ausgeführt wurde. Anschließend wurde die Funktion erneut für connectionHandle aufgerufen.

Die Funktion wurde aufgerufen, und bevor die Ausführung von SQLCancelHandle abgeschlossen war, wurde für connectionHandle aus einem anderen Thread in einer Multithreadanwendung aufgerufen.
HY010 Funktionssequenzfehler (DM) Eine asynchron ausgeführte Funktion wurde für ein StatementHandle aufgerufen, das dem ConnectionHandle zugeordnet ist, und wurde noch ausgeführt, als SQLDisconnect aufgerufen wurde.

(DM) Eine asynchron ausgeführte Funktion (nicht diese) wurde für connectionHandle aufgerufen und wurde noch ausgeführt, als diese Funktion aufgerufen wurde.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations oder SQLSetPos wurde für ein StatementHandle aufgerufen, das connectionHandle zugeordnet ist, und SQL_NEED_DATA zurückgegeben. Diese Funktion wurde aufgerufen, bevor Daten für alle Daten bei der Ausführungsparameter oder -spalten gesendet wurden.
HY013 Fehler bei der Speicherverwaltung Der Funktionsaufruf konnte nicht verarbeitet werden, weil auf die zugrunde liegenden Speicherobjekte nicht zugegriffen werden konnte, möglicherweise aufgrund von geringen Arbeitsspeicherbedingungen.
HY117 Die Verbindung wird aufgrund eines unbekannten Transaktionsstatus angehalten. Nur trenn- und schreibgeschützte Funktionen sind zulässig. (DM) Weitere Informationen zum angehaltenen Zustand finden Sie unter SQLEndTran-Funktion.
HYT01 Verbindungstimeout abgelaufen Der Zeitraum für das Verbindungstimeout ist abgelaufen, bevor die Datenquelle auf die Anforderung geantwortet hat und die Verbindung weiterhin aktiv ist. Der Verbindungstimeoutzeitraum wird über SQLSetConnectAttr festgelegt, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Treiber unterstützt diese Funktion nicht. (DM) Der der ConnectionHandle zugeordnete Treiber unterstützt die Funktion nicht.
IM017 Abruf ist im asynchronen Benachrichtigungsmodus deaktiviert. Wenn das Benachrichtigungsmodell verwendet wird, wird die Abfrage deaktiviert.
IM018 SQLCompleteAsync wurde nicht aufgerufen, um den vorherigen asynchronen Vorgang für dieses Handle abzuschließen. Wenn der vorherige Funktionsaufruf für das Handle SQL_STILL_EXECUTING zurückgibt und der Benachrichtigungsmodus aktiviert ist, muss SQLCompleteAsync für das Handle aufgerufen werden, um die Nachverarbeitung durchzuführen und den Vorgang abzuschließen.

Kommentare

Wenn eine Anwendung SQLDisconnect aufruft, nachdem SQLBrowseConnect SQL_NEED_DATA zurückgibt und bevor ein anderer Rückgabecode zurückgegeben wird, bricht der Treiber den Verbindungsbrowsvorgang ab und gibt die Verbindung in einen nicht verbundenen Zustand zurück.

Wenn eine Anwendung SQLDisconnect aufruft, während dem Verbindungshandle eine unvollständige Transaktion zugeordnet ist, gibt der Treiber SQLSTATE 25000 (Ungültiger Transaktionsstatus) zurück, was angibt, dass die Transaktion unverändert ist und die Verbindung geöffnet ist. Eine unvollständige Transaktion ist eine Transaktion, für die kein Commit ausgeführt oder ein Rollback mit SQLEndTran durchgeführt wurde.

Wenn eine Anwendung SQLDisconnect aufruft, bevor sie alle der Verbindung zugeordneten Anweisungen freigegeben hat, gibt der Treiber, nachdem er erfolgreich die Verbindung mit der Datenquelle getrennt hat, diese Anweisungen und alle Deskriptoren frei, die explizit für die Verbindung zugeordnet wurden. Wenn jedoch eine oder mehrere der der Verbindung zugeordneten Anweisungen weiterhin asynchron ausgeführt werden, gibt SQLDisconnect SQL_ERROR mit dem SQLSTATE-Wert HY010 zurück (Funktionssequenzfehler). Außerdem gibt SQLDisconnect alle zugeordneten Anweisungen und alle Deskriptoren frei, die explizit für die Verbindung zugeordnet wurden, wenn sich die Verbindung in einem angehaltenen Zustand befindet oder SQLDisconnect erfolgreich von SQLCancelHandle abgebrochen wurde.

Informationen dazu, wie eine Anwendung SQLDisconnect verwendet, finden Sie unter Trennen einer Datenquelle oder eines Treibers.

Trennen einer Verbindung mit einem Pool

Wenn das Verbindungspooling für eine freigegebene Umgebung aktiviert ist und eine Anwendung SQLDisconnect für eine Verbindung in dieser Umgebung aufruft, wird die Verbindung an den Verbindungspool zurückgegeben und ist weiterhin für andere Komponenten verfügbar, die dieselbe freigegebene Umgebung verwenden.

Codebeispiel

Weitere Informationen finden Sie unter ODBC-Beispielprogramm, SQLBrowseConnect-Funktion und SQLConnect-Funktion.

Informationen über Finden Sie unter
Zuweisen eines Handles SQLAllocHandle-Funktion
Aufbauen der Verbindung zu einer Datenquelle SQLConnect-Funktion
Herstellen einer Verbindung mit einer Datenquelle mithilfe einer Verbindungszeichenfolge oder eines Dialogfelds SQLDriverConnect-Funktion
Ausführen eines Commit- oder Rollbackvorgangs SQLEndTran-Funktion
Freigeben eines Verbindungshandles SQLFreeConnect-Funktion

Weitere Informationen

ODBC-API-Referenz
ODBC-Headerdateien