Dela via


SQLDisconnect-funktion

Efterlevnad
Version introducerad: ODBC 1.0 Standardefterlevnad: ISO 92

Sammanfattning
SQLDisconnect stänger anslutningen som är associerad med ett specifikt anslutningshandtag.

Syntax

  
SQLRETURN SQLDisconnect(  
     SQLHDBC     ConnectionHandle);  

Argument

ConnectionHandle
[Indata] Anslutningshandtag.

Returnerar

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE eller SQL_STILL_EXECUTING.

Diagnostik

När SQLDisconnect- returnerar SQL_ERROR eller SQL_SUCCESS_WITH_INFO kan ett associerat SQLSTATE-värde hämtas genom att anropa SQLGetDiagRec med en HandleType- av SQL_HANDLE_DBC och en Handle för ConnectionHandle. I följande tabell visas de SQLSTATE-värden som ofta returneras av SQLDisconnect- och förklarar var och en i kontexten för den här funktionen. notationen "(DM)" föregår beskrivningarna av SQLSTATEs som returneras av Driver Manager. Returkoden som är associerad med varje SQLSTATE-värde är SQL_ERROR, om inget annat anges.

SQLSTATE Fel Beskrivning
01000 Allmän varning Informationsmeddelande för drivrutinsspecifikt. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.)
01002 Fel vid frånkoppling Ett fel uppstod under frånkopplingen. Frånkopplingen lyckades dock. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.)
08003 Anslutningen är inte öppen (DM) Anslutningen som anges i argumentet ConnectionHandle inte var öppen.
25000 Ogiltigt transaktionstillstånd En transaktion har bearbetats på den anslutning som angetts av argumentet ConnectionHandle. Transaktionen förblir aktiv.
HY000 Allmänt fel Ett fel uppstod för vilket det inte fanns någon specifik SQLSTATE och för vilken ingen implementeringsspecifik SQLSTATE definierades. Felmeddelandet som returneras av SQLGetDiagRec i bufferten *MessageText beskriver felet och orsaken.
HY001 Fel vid minnesallokering Drivrutinen kunde inte allokera minne som krävs för körning eller slutförande av funktionen.
HY008 Åtgärden avbröts Asynkron bearbetning aktiverades för ConnectionHandle-. Funktionen anropades och innan den kördes SQLCancelHandle-funktionen anropadesConnectionHandle-. Sedan anropades funktionen igen på ConnectionHandle.

Funktionen anropades och innan den kördes SQLCancelHandle anropadesConnectionHandle från en annan tråd i ett flertrådsprogram.
HY010 Funktionssekvensfel (DM) En asynkront körande funktion anropades för en StatementHandle- associerad med ConnectionHandle- och kördes fortfarande när SQLDisconnect- anropades.

(DM) En asynkront körande funktion (inte den här) anropades för ConnectionHandle- och kördes fortfarande när den här funktionen anropades.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperationseller SQLSetPos anropades för en StatementHandle- som är associerad med ConnectionHandle och returnerades SQL_NEED_DATA. Den här funktionen anropades innan data skickades för alla data-at-execution-parametrar eller kolumner.
HY013 Minneshanteringsfel Det gick inte att bearbeta funktionsanropet eftersom det inte gick att komma åt underliggande minnesobjekt, möjligen på grund av minnesbrist.
HY117 Anslutningen pausas på grund av okänt transaktionstillstånd. Endast frånkopplings- och skrivskyddade funktioner tillåts. (DM) Mer information om inaktiverat tillstånd finns i SQLEndTran Function.
HYT01 Tidsgränsen för anslutningen har upphört att gälla Tidsgränsen för anslutningen upphörde att gälla innan datakällan svarade på begäran och anslutningen är fortfarande aktiv. Tidsgränsen för anslutningen anges via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Drivrutinen stöder inte den här funktionen (DM) Drivrutinen som är associerad med ConnectionHandle stöder inte funktionen.
IM017 Avsökning är inaktiverat i asynkront meddelandeläge När meddelandemodellen används inaktiveras avsökningen.
IM018 SQLCompleteAsync- har inte anropats för att slutföra den tidigare asynkrona åtgärden på handtaget. Om det tidigare funktionsanropet på handtaget returnerar SQL_STILL_EXECUTING och om meddelandeläget är aktiverat måste SQLCompleteAsync anropas på handtaget för att utföra efterbearbetningen och slutföra åtgärden.

Kommentarer

Om ett program anropar SQLDisconnect efter SQLBrowseConnect- returnerar SQL_NEED_DATA och innan den returnerar en annan returkod, avbryter drivrutinen anslutningsprocessen och returnerar anslutningen till ett tillstånd som inte är anslutet.

Om ett program anropar SQLDisconnect medan det finns en ofullständig transaktion som är associerad med anslutningshandtaget returnerar drivrutinen SQLSTATE 25000 (ogiltigt transaktionstillstånd), vilket indikerar att transaktionen är oförändrad och anslutningen är öppen. En ofullständig transaktion är en transaktion som inte har checkats in eller återställts med SQLEndTran-.

Om ett program anropar SQLDisconnect innan det har frigjort alla instruktioner som är associerade med anslutningen frigör drivrutinen, efter att den har kopplats från datakällan, dessa instruktioner och alla deskriptorer som uttryckligen har allokerats för anslutningen. Men om en eller flera av de instruktioner som är associerade med anslutningen fortfarande körs asynkront returnerar SQLDisconnect SQL_ERROR med sqlstate-värdet HY010 (funktionssekvensfel). Dessutom frigör SQLDisconnect- alla associerade instruktioner och alla deskriptorer som uttryckligen har allokerats för anslutningen, om anslutningen är i pausat tillstånd eller om SQLDisconnect- avbröts av SQLCancelHandle-.

Information om hur ett program använder SQLDisconnectfinns i Koppla från en datakälla eller drivrutin.

Koppla från en poolanslutning

Om anslutningspooler är aktiverade för en delad miljö och ett program anropar SQLDisconnect på en anslutning i den miljön, returneras anslutningen till anslutningspoolen och är fortfarande tillgänglig för andra komponenter med samma delade miljö.

Kodexempel

Se ODBC-exempelprogrammet, SQLBrowseConnect Functionoch SQLConnect Function.

Mer information om Se
Allokera ett handtag SQLAllocHandle-funktion
Ansluta till en datakälla SQLConnect-funktion
Ansluta till en datakälla med hjälp av en anslutningssträng eller dialogruta SQLDriverConnect-funktion
Köra en inchecknings- eller återställningsåtgärd SQLEndTran Function
Frigör ett anslutningshandtag SQLFreeConnect-funktion

Se även

ODBC API-referens
ODBC-huvudfiler