SQLDisconnect-Funktion
Konformitäts-
Version eingeführt: 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] Verbindungsziehpunkt.
Ertrag
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE oder SQL_STILL_EXECUTING.
Diagnostik
Wenn SQLDisconnect- SQL_ERROR oder SQL_SUCCESS_WITH_INFO zurückgibt, kann ein zugeordneter SQLSTATE-Wert durch Aufrufen SQLGetDiagRec- mit einer HandleType- SQL_HANDLE_DBC und einem Handle von ConnectionHandle-abgerufen werden. In der folgenden Tabelle sind die SQLSTATE-Werte aufgeführt, die häufig von SQLDisconnect- zurückgegeben werden und die einzelnen Werte im Kontext dieser Funktion erläutert werden. 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 | Fehler beim Trennen. Die Verbindung wurde jedoch erfolgreich getrennt. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.) |
08003 | Verbindung nicht geöffnet | (DM) Die im Argument angegebene Verbindung ConnectionHandle nicht geöffnet war. |
25000 | Ungültiger Transaktionsstatus | Es wurde eine Transaktion für die durch das Argument angegebene Verbindung ConnectionHandle-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 dessen Ursache. |
HY001 | Speicherzuweisungsfehler | Der Treiber konnte speicher nicht zuordnen, der erforderlich ist, um die Ausführung oder den Abschluss der Funktion zu unterstützen. |
HY008 | Vorgang abgebrochen | Die asynchrone Verarbeitung wurde für die ConnectionHandle-aktiviert. Die Funktion wurde aufgerufen, und bevor sie die Ausführung SQLCancelHandle Function für die ConnectionHandle-aufgerufen wurde. Anschließend wurde die Funktion erneut für die ConnectionHandle-aufgerufen. Die Funktion wurde aufgerufen, und bevor sie die Ausführung SQLCancelHandle- für die ConnectionHandle- von einem anderen Thread in einer Multithread-Anwendung aufgerufen wurde. |
HY010 | Funktionssequenzfehler | (DM) Eine asynchron ausgeführte Funktion wurde für eine StatementHandle- aufgerufen, die dem ConnectionHandle- zugeordnet ist und noch ausgeführt wurde, als SQLDisconnect- aufgerufen wurde. (DM) Eine asynchron ausgeführte Funktion (nicht diese) wurde für die ConnectionHandle- aufgerufen und wurde beim Aufrufen dieser Funktion noch ausgeführt. (DM) SQLExecute, SQLExecDirect, SQLBulkOperationsoder SQLSetPos wurde für eine StatementHandle- aufgerufen, die dem ConnectionHandle- zugeordnet und SQL_NEED_DATA zurückgegeben wurde. Diese Funktion wurde aufgerufen, bevor Daten für alle Daten bei ausführungsparametern oder -spalten gesendet wurden. |
HY013 | Speicherverwaltungsfehler | Der Funktionsaufruf konnte nicht verarbeitet werden, da auf die zugrunde liegenden Speicherobjekte nicht zugegriffen werden konnte, möglicherweise aufgrund geringer Arbeitsspeicherbedingungen. |
HY117 | Die Verbindung wird aufgrund des unbekannten Transaktionsstatus angehalten. Es sind nur Trenn- und schreibgeschützte Funktionen zulässig. | (DM) Weitere Informationen zum angehaltenen Zustand finden Sie unter SQLEndTran Function. |
HYT01 | Verbindungstimeout abgelaufen | Der Zeitraum für das Verbindungstimeout ist abgelaufen, bevor die Datenquelle auf die Anforderung geantwortet hat, und die Verbindung ist noch aktiv. Der Verbindungstimeoutzeitraum wird über SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT festgelegt. |
IM001 | Dieser Treiber unterstützt diese Funktion nicht. | (DM) Der dem ConnectionHandle zugeordnete Treiber unterstützt die Funktion nicht. |
IM017 | Die Abrufung ist im asynchronen Benachrichtigungsmodus deaktiviert. | Immer wenn das Benachrichtigungsmodell verwendet wird, ist die Abrufung 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 wenn der Benachrichtigungsmodus aktiviert ist, muss SQLCompleteAsync- für das Handle aufgerufen werden, um die Nachbearbeitung 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 zu einem nicht verbundenen Zustand zurück.
Wenn eine Anwendung SQLDisconnect- aufruft, während eine unvollständige Transaktion mit dem Verbindungshandle verknüpft ist, gibt der Treiber SQLSTATE 25000 (Ungültiger Transaktionsstatus) zurück, der angibt, dass die Transaktion unverändert ist und die Verbindung geöffnet ist. Eine unvollständige Transaktion ist eine Transaktion, die mit SQLEndTran-nicht zugesichert oder zurückgesetzt wurde.
Wenn eine Anwendung SQLDisconnect- aufruft, bevor sie alle der Verbindung zugeordneten Anweisungen freigegeben hat, gibt der Treiber nach dem erfolgreichen Trennen der Datenquelle diese Anweisungen und alle Deskriptoren frei, die explizit für die Verbindung zugeordnet wurden. Wenn jedoch mindestens eine der anweisungen, die der Verbindung zugeordnet sind, asynchron ausgeführt werden, gibt SQLDisconnect SQL_ERROR mit einem SQLSTATE-Wert von HY010 (Funktionssequenzfehler) zurück. Darüber hinaus werden SQLDisconnect- alle zugeordneten Anweisungen und alle Deskriptoren freigeben, die explizit für die Verbindung zugewiesen wurden, wenn sich die Verbindung in einem angehaltenen Zustand befindet oder SQLDisconnect- von SQLCancelHandle erfolgreich abgebrochen wurde.
Informationen dazu, wie eine Anwendung SQLDisconnect-verwendet, finden Sie unter Trennen einer Datenquelle oder eines Treibers.
Trennen der Verbindung mit einem Pool
Wenn 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
Siehe Beispiel-ODBC-Programm, SQLBrowseConnect Functionund SQLConnect Function.
Verwandte Funktionen
Informationen zu | Siehe |
---|---|
Zuordnen eines Handles | SQLAllocHandle-Funktion |
Herstellen einer Verbindung mit 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 Verbindungsziehpunkts | SQLFreeConnect-Funktion |