Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Överensstämmelse
Version introducerad: ODBC 3.0 Standardsefterlevnad: ISO 92
Summary
SQLSetConnectAttr sätter attribut som styr aspekter av anslutningar.
Note
För mer information om vad Driver Manager mappar denna funktion till när en ODBC 3*.x*-applikation arbetar med en ODBC 2*.x*-drivrutin, se Mapping Replacement Functions for Backward Compatibility of Applications.
Syntax
SQLRETURN SQLSetConnectAttr(
SQLHDBC ConnectionHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER StringLength);
Arguments
ConnectionHandle
Indata: Anslutningshandtag.
Attribut
[Input] Attribut till set, listat i "Kommentarer."
ValuePtr
[Input] Peka på värdet som ska kopplas till Attribute. Beroende på värdet av Attribute kommer ValuePtr att vara ett osignerat heltalsvärde eller peka på en null-terminerad teckensträng. Observera att integraltypen av attributargumentet kanske inte har fast längd, se avsnittet Kommentarer för detaljer.
StringLength
[Input] Om Attribute är ett ODBC-definierat attribut och ValuePtr pekar på en teckensträng eller en binär buffert, bör detta argument vara längden på *ValuePtr. För teckensträngsdata bör detta argument innehålla antalet byte i strängen.
Om Attribut är ett ODBC-definierat attribut och ValuePtr är ett heltal, ignoreras StringLength .
Om Attribut är ett drivrutinsdefinierat attribut anger applikationen attributets natur till Driver Manager genom att sätta argumentet StringLength . StringLength kan ha följande värden:
Om ValuePtr är en pekare till en teckensträng, så är StringLength längden på strängen eller SQL_NTS.
Om ValuePtr är en pekare till en binär buffert, placerar applikationen resultatet av makrot SQL_LEN_BINARY_ATTR(längd) i StringLength. Detta placerar ett negativt värde i StringLength.
Om ValuePtr är en pekare till ett annat värde än en teckensträng eller en binär sträng, så bör StringLength ha värdet SQL_IS_POINTER.
Om ValuePtr innehåller ett fast längdvärde, är StringLength antingen SQL_IS_INTEGER eller SQL_IS_UINTEGER, beroende på vad som är lämpligt.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE eller SQL_STILL_EXECUTING.
Diagnostics
När SQLSetConnectAttr returnerar SQL_ERROR eller SQL_SUCCESS_WITH_INFO kan ett associerat SQLSTATE-värde erhållas genom att anropa SQLGetDiagRec med en HandleType av SQL_HANDLE_DBC och ett Handle av ConnectionHandle. Följande tabell listar de SQLSTATE-värden som vanligtvis returneras av SQLSetConnectAttr och förklarar var och en i kontexten av denna funktion; notationen "(DM)" föregår beskrivningarna av SQLSTATE som returneras av Driver Manager. Returkoden som är associerad med varje SQLSTATE-värde är SQL_ERROR, om inget annat anges.
Föraren kan återvända SQL_SUCCESS_WITH_INFO för att lämna information om resultatet av att sätta ett alternativ.
| SQLSTATE | Error | Beskrivning |
|---|---|---|
| 01000 | Allmän varning | Informationsmeddelande för drivrutinsspecifikt. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.) |
| 01S02 | Alternativvärdet har ändrats | Drivrutinen stödde inte det värde som specificerades i ValuePtr och ersatte ett liknande värde. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.) |
| 08002 | Anslutningsnamn i bruk | Attributargumentet var SQL_ATTR_ODBC_CURSORS, och drivrutinen var redan ansluten till datakällan. |
| 08003 | Anslutningen är inte öppen | (DM) Ett attributvärde angavs som krävde en öppen anslutning, men ConnectionHandle var inte i ett anslutet tillstånd. |
| 08S01 | Kommunikationslänkfel | Kommunikationslänken mellan drivrutinen och datakällan som drivrutinen var ansluten till misslyckades innan funktionen slutförde bearbetningen. |
| 24000 | Ogiltigt markörtillstånd | Attributargumentet var SQL_ATTR_CURRENT_CATALOG, och en resultatuppsättning var under behandling. |
| 25000 | Olaglig verksamhet under lokal transaktion | En anslutning befann sig i en lokal transaktion när man försökte ansluta sig till en distribuerad transaktionsanslutning (DTC) genom att sätta anslutningsattributet SQL_ATTR_ENLIST_IN_DTC. En anslutning är redan registrerad i en DTC. En anslutning har anslutits till en distribuerad transaktionsanslutning och en lokal transaktion startades genom att sätta SQL_ATTR_AUTOCOMMIT till SQL_AUTOCOMMIT_OFF. |
| 3D000 | Ogiltigt katalognamn | Attributargumentet var SQL_CURRENT_CATALOG, och det angivna katalognamnet var ogiltigt. |
| 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 returnerades av SQLGetDiagRec i *MessageText-bufferten beskriver felet och dess orsak. |
| 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 SQLSetConnectAttr anropades, och innan exekveringen var klar kallades funktionen SQLCancelHandle på ConnectionHandle, och sedan anropades SQLSetConnectAttr-funktionen igen på ConnectionHandle. Eller så anropades funktionen SQLSetConnectAttr , och innan exekveringen var klar kallades SQLCancelHandle på ConnectionHandle från en annan tråd i en flertrådad applikation. |
| HY009 | Ogiltig användning av null-pekare | Attributargumentet identifierade ett anslutningsattribut som krävde ett strängvärde, och argumentet ValuePtr var en nullpekare. |
| HY010 | Funktionssekvensfel | (DM) En asynkront exekverande funktion anropades för en StatementHandle kopplad till ConnectionHandle och kördes fortfarande när SQLSetConnectAttr anropades. (DM) En asynkront exekverande funktion (inte denna) anropades för ConnectionHandle och kördes fortfarande när denna funktion anropades. (DM) SQLExecute, SQLExecDirect eller SQLMoreResults anropades för ett av satshandtagen kopplade till ConnectionHandle och returnerades SQL_PARAM_DATA_AVAILABLE. Den här funktionen anropades innan data hämtades för alla strömmade parametrar. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations eller SQLSetPos anropades för ett StatementHandle kopplat till ConnectionHandle och returnerades SQL_NEED_DATA. Den här funktionen anropades innan data skickades för alla data-at-execution-parametrar eller kolumner. (DM) SQLBrowseConnect anropades för ConnectionHandle och returnerades SQL_NEED_DATA. Denna funktion anropades innan SQLBrowseConnect returnerade SQL_SUCCESS_WITH_INFO eller SQL_SUCCESS. |
| HY011 | Attributet kan inte sättas nu | Attributargumentet var SQL_ATTR_TXN_ISOLATION, och en transaktion var öppen. |
| HY013 | Minneshanteringsfel | Det gick inte att bearbeta funktionsanropet eftersom det inte gick att komma åt underliggande minnesobjekt, möjligen på grund av minnesbrist. |
| HY024 | Ogiltigt attributvärde | Givet det angivna attributvärdet angavs ett ogiltigt värde i ValuePtr. (Driver Manager returnerar detta SQLSTATE endast för anslutnings- och satsattribut som accepterar en diskret uppsättning värden, såsom SQL_ATTR_ACCESS_MODE eller SQL_ATTR_ASYNC_ENABLE. För alla andra anslutnings- och satsattribut måste drivrutinen verifiera värdet som anges i ValuePtr.) Attributargumentet var SQL_ATTR_TRACEFILE eller SQL_ATTR_TRANSLATE_LIB, och ValuePtr var en tom sträng. |
| HY090 | Ogiltig sträng- eller buffertlängd | (DM) *ValuePtr är en teckensträng, och StringLength-argumentet var mindre än 0 men var inte SQL_NTS. |
| HY092 | Ogiltig attribut-/optionsidentifierare | (DM) Värdet som angavs för argumentattributet var inte giltigt för den version av ODBC som drivrutinen stödde. (DM) Värdet som specificerades för argumentattributet Attribut var ett skrivskyddat attribut. |
| HY114 | Drivrutinen stöder inte anslutningsnivå, asynkron funktionsexekvering | (DM) En applikation försökte möjliggöra asynkron funktionsexekvering med SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE för en drivrutin som inte stödjer asynkrona anslutningsoperationer. |
| HY117 | Anslutningen pausas på grund av okänt transaktionstillstånd. Endast frånkopplings- och skrivskyddade funktioner tillåts. | (DM) För mer information om det suspenderade tillståndet, se SQLEndTran-funktionen. |
| HY121 | Cursor Library och Driver-Aware Pooling kan inte aktiveras samtidigt | För mer information, se Anslutningspool med drivarerkännande. |
| HYC00 | Valfri funktion har inte implementerats | Värdet som specificerades för argumentattributet var en giltig ODBC-anslutning eller statement-attribut för den version av ODBC som stöddes av drivrutinen men inte av drivrutinen. |
| HYT01 | Tidsgränsen för anslutningen gick ut | Tidsgränsen för anslutningen löpte ut innan datakällan svarade på begäran. 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 kopplad till ConnectionHandle stöder inte funktionen. |
| IM009 | Kan inte ladda översättnings-DLL | Drivrutinen kunde inte ladda översättnings-DLL:n som specificerades för anslutningen. Detta fel kan endast returneras när Attribut är SQL_ATTR_TRANSLATE_LIB. |
| 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å det här 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. |
| S1118 | Drivrutinen stöder inte asynkron notifikation | SQL_ATTR_ASYNC_DBC_EVENT sattes in (efter att anslutningen gjordes) men asynkron notis stöds inte av drivrutinen. |
När Attribute är ett statement-attribut kan SQLSetConnectAttr returnera alla SQLSTATEs som returneras av SQLSetStmtAttr.
Comments
För allmän information om anslutningsattribut, se Anslutningsattribut.
De för närvarande definierade attributen och den version av ODBC där de introducerades visas i tabellen senare i detta avsnitt; Det förväntas att fler attribut kommer att definieras för att dra nytta av olika datakällor. Ett intervall av attribut reserveras av ODBC; drivrutinsutvecklare måste reservera värden för sin egen drivrutinsspecifika användning från Open Group.
Note
Möjligheten att sätta satsattribut på anslutningsnivå genom att anropa SQLSetConnectAttr har föråldrats i ODBC 3*.x*. ODBC 3*.x*-applikationer bör aldrig sätta satsattribut på anslutningsnivå. ODBC 3*.x* satsattribut kan inte sättas på anslutningsnivå, med undantag för attributen SQL_ATTR_METADATA_ID och SQL_ATTR_ASYNC_ENABLE, som både är anslutningsattribut och satsattribut och kan sättas på antingen anslutningsnivå eller satsnivå.
ODBC 3*.x*-drivrutiner behöver bara stödja denna funktionalitet om de ska fungera med ODBC 2*.x*-applikationer som sätter ODBC 2*.x*-satsalternativ på anslutningsnivå. Mer information finns i SQLSetConnectOption-mappning i bilaga G: Drivrutinsriktlinjer för bakåtkompatibilitet.
En applikation kan anropa SQLSetConnectAttr när som helst mellan det att anslutningen tilldelas och frigörs. Alla anslutnings- och satsattribut som applikationen framgångsrikt sätter för anslutningen kvarstår tills SQLFreeHandle anropas på anslutningen. Till exempel, om en applikation anropar SQLSetConnectAttr innan den ansluter till en datakälla, kvarstår attributet även om SQLSetConnectAttr misslyckas i drivrutinen när applikationen ansluter till datakällan; Om en applikation sätter ett drivrutinsspecifikt attribut kvarstår attributet även om applikationen ansluter till en annan drivrutin på anslutningen.
Vissa anslutningsattribut kan endast sättas innan en koppling har gjorts; andra kan bara ställas in efter att en koppling har gjorts. Följande tabell visar de anslutningsattribut som måste sättas antingen före eller efter att en anslutning har gjorts. Antingen indikerar att attributet kan sättas antingen före eller efter anslutning.
| Attribute | Ställs det in före eller efter anslutningen? |
|---|---|
| SQL_ATTR_ACCESS_MODE | Antingen[1] |
| SQL_ATTR_ASYNC_DBC_EVENT | Vilken som helst |
| SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE | Antingen[4] |
| SQL_ATTR_ASYNC_DBC_PCALLBACK | Vilken som helst |
| SQL_ATTR_ASYNC_DBC_PCONTEXT | Vilken som helst |
| SQL_ATTR_ASYNC_ENABLE | Antingen[2] |
| SQL_ATTR_AUTO_IPD | Vilken som helst |
| SQL_ATTR_AUTOCOMMIT | Antingen[5] |
| SQL_ATTR_CONNECTION_DEAD | Efter |
| SQL_ATTR_CONNECTION_TIMEOUT | Vilken som helst |
| SQL_ATTR_CURRENT_CATALOG | Antingen[1] |
| SQL_ATTR_DBC_INFO_TOKEN | Efter |
| SQL_ATTR_ENLIST_IN_DTC | Efter |
| SQL_ATTR_LOGIN_TIMEOUT | före |
| SQL_ATTR_METADATA_ID | Vilken som helst |
| SQL_ATTR_ODBC_CURSORS | före |
| SQL_ATTR_PACKET_SIZE | före |
| SQL_ATTR_QUIET_MODE | Vilken som helst |
| SQL_ATTR_TRACE | Vilken som helst |
| SQL_ATTR_TRACEFILE | Vilken som helst |
| SQL_ATTR_TRANSLATE_LIB | Efter |
| SQL_ATTR_TRANSLATE_OPTION | Efter |
| SQL_ATTR_TXN_ISOLATION | Antingen[3] |
[1] SQL_ATTR_ACCESS_MODE och SQL_ATTR_CURRENT_CATALOG kan ställas in före eller efter anslutning, beroende på drivrutinen. Men kompatibla program ställer in dem innan du ansluter eftersom vissa drivrutiner inte har stöd för att ändra dessa efter anslutning.
[2] SQL_ATTR_ASYNC_ENABLE måste sättas innan det finns ett aktivt uttalande.
[3] SQL_ATTR_TXN_ISOLATION kan endast ställas in om det inte finns några öppna transaktioner på anslutningen. Vissa anslutningsattribut stödjer substitution av ett liknande värde om datakällan inte stöder värdet specificerat i *ValuePtr. I sådana fall returnerar drivrutinen SQL_SUCCESS_WITH_INFO och SQLSTATE 01S02 (Optionsvärdet ändrats). Till exempel, om Attribute är SQL_ATTR_PACKET_SIZE och *ValuePtr överstiger den maximala paketstorleken, ersätter drivrutinen den maximala storleken. För att bestämma det substituerade värdet anropar en applikation SQLGetConnectAttr.
[4] Om SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE sätts innan en anslutning är öppen, kommer Driver Manager att sätta drivrutinens attribut när drivrutinen laddas under ett anrop till SQLBrowseConnect, SQLConnect eller SQLDriverConnect. Innan ett anrop till SQLBrowseConnect, SQLConnect eller SQLDriverConnect vet inte Driver Manager vilken drivrutin som ska ansluta till och vet inte om drivrutinen stödjer asynkrona anslutningsoperationer. Därför returnerar Driver Manager alltid SQL_SUCCESS. Men om drivrutinen inte stödjer asynkrona anslutningsoperationer kommer anropet till SQLBrowseConnect, SQLConnect eller SQLDriverConnect att misslyckas.
[5] När SQL_ATTR_AUTOCOMMIT är satt till FALSK bör applikationer anropa SQLEndTran(SQL_ROLLBACK) om något API returnerar SQL_ERROR för att säkerställa transaktionell konsistens.
Formatet på informationen som sätts i *ValuePtr-bufferten beror på det specificerade attributet. SQLSetConnectAttr accepterar attributinformation i ett av två olika format: en nullterminerad teckensträng eller ett heltalsvärde. Formatet för varje anges i attributets beskrivning. Teckensträngar som pekas på av ValuePtr-argumentet i SQLSetConnectAttr har en längd på StringLength-bytes .
StringLength-argumentet ignoreras om längden definieras av attributet, vilket är fallet för alla attribut som introduceras i ODBC 2*.x* eller tidigare.
| Attribut | ValuePtr-innehåll |
|---|---|
| SQL_ATTR_ACCESS_MODE (ODBC 1.0) | Ett SQLUINTEGER-värde. SQL_MODE_READ_ONLY används av drivrutinen eller datakällan som en indikator på att anslutningen inte behöver stödja SQL-satser som orsakar uppdateringar. Detta läge kan användas för att optimera låsstrategier, transaktionshantering eller andra områden beroende på drivrutinen eller datakällan. Drivrutinen är inte skyldig att förhindra att sådana uttalanden skickas till datakällan. Beteendet hos drivrutinen och datakällan när de ombeds bearbeta SQL-satser som inte är skrivskyddade under en skrivskyddad anslutning är implementationsdefinierad. SQL_MODE_READ_WRITE är standard. |
| SQL_ATTR_ASYNC_DBC_EVENT (ODBC 3,8) | Ett SQLPOINTER-värde som är ett händelsehandtag. Avisering om slutförande av asynkrona funktioner aktiveras genom att anropa SQLSetConnectAttr med attributet SQL_ATTR_ASYNC_STMT_EVENT och ange händelsehandtaget. Notera: Notifikationsmetoden stöds inte med markörbiblioteket. Ett program får ett felmeddelande om det försöker aktivera markörbiblioteket via SQLSetConnectAttr när meddelandemetoden är aktiverad. |
| SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE (ODBC 3.8) | Ett SQLUINTEGER-värde som möjliggör eller inaktiverar asynkron exekvering av valda funktioner på anslutningshandtaget. Mer information finns i Asynkron körning (pollning). SQL_ASYNC_DBC_ENABLE_ON = Aktivera asynkron operation för specificerade anslutningsrelaterade funktioner. SQL_ASYNC_DBC_ENABLE_OFF = (Standard) Inaktivera asynkron drift för specificerade anslutningsrelaterade funktioner. Att ställa in SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE är alltid synkront (det vill säga, den kommer aldrig att återvända SQL_STILL_EXECUTING). Asynkron exekvering av satsoperationer aktiveras med SQL_ATTR_ASYNC_ENABLE. |
| SQL_ATTR_ASYNC_DBC_PCALLBACK (ODBC 3,8) | Ett SQLPOINTER-värde som pekar på kontextstrukturen. Endast Driver Manager kan anropa en drivrutins SQLSetStmtAttr-funktion med detta attribut. |
| SQL_ATTR_ASYNC_DBC_PCONTEXT (ODBC 3,8) | Ett SQLPOINTER-värde som pekar på kontextstrukturen. Endast Driver Manager kan anropa en drivrutins SQLSetStmtAttr-funktion med detta attribut. |
| SQL_ATTR_ASYNC_ENABLE (ODBC 3.0) | Ett SQLULEN-värde som specificerar om en funktion anropad med ett sats på den specificerade anslutningen körs asynkront: SQL_ASYNC_ENABLE_OFF = Inaktivera anslutningsnivå asynkron exekveringsstöd för satsoperationer (standard). SQL_ASYNC_ENABLE_ON = Aktivera anslutningsnivå asynkron exekveringsstöd för satsoperationer. Detta attribut kan sättas oavsett om SQLGetInfo med informationstypen SQL_ASYNC_MODE returnerar SQL_AM_CONNECTION eller SQL_AM_STATEMENT. |
| SQL_ATTR_AUTO_IPD (ODBC 3.0) | Ett skrivskyddat SQLUINTEGER-värde som specificerar om automatisk fyllning av IPD efter ett anrop till SQLPrepare stöds: SQL_TRUE = Automatisk befolkning av IPD efter ett anrop till SQLPrepare stöds av drivrutinen. SQL_FALSE = Automatisk befolkning av IPD efter ett anrop till SQLPrepare stöds inte av drivrutinen. Servrar som inte stöder förberedda satser kan inte automatiskt fylla IPD:n. Om SQL_TRUE returneras för attributet SQL_ATTR_AUTO_IPD anslutning kan statementattributet SQL_ATTR_ENABLE_AUTO_IPD ställas in för att automatiskt slå på eller av IPD:n automatiskt. Om SQL_ATTR_AUTO_IPD är SQL_FALSE kan SQL_ATTR_ENABLE_AUTO_IPD inte ställas in på SQL_TRUE. Standardvärdet av SQL_ATTR_ENABLE_AUTO_IPD är lika med värdet av SQL_ATTR_AUTO_IPD. Detta anslutningsattribut kan returneras av SQLGetConnectAttr men kan inte sättas av SQLSetConnectAttr. |
| SQL_ATTR_AUTOCOMMIT (ODBC 1.0) | Ett SQLUINTEGER-värde som specificerar om autocommit eller manuellt commit-läge ska användas: SQL_AUTOCOMMIT_OFF = Drivrutinen använder manuellt commit-läge, och applikationen måste uttryckligen committa eller rulla tillbaka transaktioner med SQLEndTran. SQL_AUTOCOMMIT_ON = Föraren använder autocommit-läge. Varje uttalande görs omedelbart efter att det har utförts. Det här är standardinställningen. Alla öppna transaktioner på anslutningen genomförs när SQL_ATTR_AUTOCOMMIT är inställd på att SQL_AUTOCOMMIT_ON byta från manuellt commit-läge till autocommit-läge. För mer information, se Commit Mode. Viktigt: Vissa datakällor tar bort åtkomstplanerna och stänger markörerna för alla satser på en anslutning varje gång ett uttalande commitas; Autocommit-läget kan orsaka detta efter att varje icke-fråga-sats har körts eller när markören stängs för en fråga. För mer information, se informationstyperna SQL_CURSOR_COMMIT_BEHAVIOR och SQL_CURSOR_ROLLBACK_BEHAVIOR i SQLGetInfo och Effect of Transactions on Cursors and Prepared Statements. När en batch körs i autocommit-läge är två saker möjliga. Hela batchen kan behandlas som en autocommitabel enhet, eller så behandlas varje sats i en batch som en autocommitabel enhet. Vissa datakällor kan stödja båda dessa beteenden och kan erbjuda ett sätt att välja det ena eller det andra. Den är drivrutinsdefinierad om en batch behandlas som en autocommitabel enhet eller om varje enskild sats inom batchen är autocommitable. |
| SQL_ATTR_CONNECTION_DEAD (ODBC 3.5) |
Ett skrivskyddat SQLUINTEGER-värde som anger anslutningens tillstånd. Om SQL_CD_TRUE har anslutningen gått förlorad. Om SQL_CD_FALSE är anslutningen fortfarande aktiv. |
| SQL_ATTR_CONNECTION_TIMEOUT (ODBC 3.0) | Ett SQLUINTEGER-värde som motsvarar antalet sekunder som krävs för att någon begäran på anslutningen ska slutföras innan applikationen återvänder. Drivrutinen bör returnera SQLSTATE HYT00 (Timeout expired) varje gång det är möjligt att timeout i en situation som inte är kopplad till frågeexekvering eller inloggning. Om ValuePtr är lika med 0 (standarden) finns det ingen timeout. |
| SQL_ATTR_CURRENT_CATALOG (ODBC 2.0) | En teckensträng som innehåller namnet på katalogen som ska användas av datakällan. Till exempel är katalogen i SQL Server en databas, så drivrutinen skickar en USE-databassats till datakällan, där databasen är den databas som anges i *ValuePtr. För en drivrutin i ett enda lager kan katalogen vara en katalog, så drivrutinen ändrar sin nuvarande katalog till den katalog som anges i *ValuePtr. |
| SQL_ATTR_DBC_INFO_TOKEN (ODBC 3.8 | Ett SQLPOINTER-värde som används för att sätta tillbaka anslutningsinfotoken i DBC-handtaget när SQLRateConnections (*pRating) parameter inte är lika med 100. SQL_ATTR_DBC_INFO_TOKEN är endast för set. Det är inte möjligt att använda SQLGetConnectAttr eller SQLGetConnectOption för att hämta detta värde. Driver Managers SQLSetConnectAttr accepterar inte SQL_ATTR_DBC_INFO_TOKEN, eftersom en applikation inte ska sätta detta attribut. Om en drivrutin returnerar SQL_ERROR efter att ha satt SQL_ATTR_DBC_INFO_TOKEN, frigörs anslutningen som just erhållits från poolen. Driver Manager kommer sedan att försöka få en annan anslutning från poolen. Se Utveckling av Connection-Pool medvetenhet i en ODBC-drivrutin för mer information. |
| SQL_ATTR_ENLIST_IN_DTC (ODBC 3.0) | Ett SQLPOINTER-värde som specificerar om ODBC-drivrutinen ska användas i distribuerade transaktioner koordinerade av Microsoft Component Services. Skicka ett DTC OLE-transaktionsobjekt som specificerar att transaktionen ska exporteras till SQL Server, eller SQL_DTC_DONE för att avsluta anslutningens DTC-association. Klienten anropar Microsoft Distributed Transaction Coordinator (MS DTC) OLE ITransactionDispenser::BeginTransaction-metoden för att påbörja en MS DTC-transaktion och skapa ett MS DTC-transaktionsobjekt som representerar transaktionen. Applikationen anropar sedan SQLSetConnectAttr med det SQL_ATTR_ENLIST_IN_DTC alternativet att associera transaktionsobjektet med ODBC-anslutningen. All relaterad databasaktivitet kommer att utföras under skydd av MS DTC-transaktionen. Applikationen anropar SQLSetConnectAttr med SQL_DTC_DONE för att avsluta anslutningens DTC-association. Mer information finns i MS DTC-dokumentationen. |
| SQL_ATTR_LOGIN_TIMEOUT (ODBC 1.0) | Ett SQLUINTEGER-värde som motsvarar antalet sekunder som krävs för att en inloggningsförfrågan ska slutföras innan man återvänder till applikationen. Standardläget är drivrutinsberoende. Om ValuePtr är 0 inaktiveras timeouten och ett anslutningsförsök väntar på obestämd tid. Om den angivna timeouten överskrider den maximala inloggningstimeout i datakällan, ersätter drivrutinen det värdet och returnerar SQLSTATE 01S02 (Optionsvärdet ändrat). |
| SQL_ATTR_METADATA_ID (ODBC 3.0) | Ett SQLUINTEGER-värde som avgör hur strängargumenten för katalogfunktioner behandlas. Om SQL_TRUE behandlas strängargumentet för katalogfunktioner som identifierare. Fallet är inte betydelsefullt. För oavgränsade strängar tar drivern bort eventuella efterföljande mellanrum och strängen viks till versaler. För avgränsade strängar tar drivern bort alla ledande eller efterföljande mellanrum och tar bokstavligen det som är mellan avgränsarna. Om ett av dessa argument sätts till en nullpekare returnerar funktionen SQL_ERROR och SQLSTATE HY009 (Ogiltig användning av nollpekare). Om SQL_FALSE behandlas inte strängargumenten i katalogfunktioner som identifierare. Fallet är betydelsefullt. De kan antingen innehålla ett strängsökningsmönster eller inte, beroende på argumentet. Standardvärdet är SQL_FALSE. TableType-argumentet i SQLTables, som tar en lista med värden, påverkas inte av detta attribut. SQL_ATTR_METADATA_ID kan också ställas in på uttalandenivå. (Det är det enda anslutningsattributet som också är ett statementattribut.) Mer information finns i Argument i Katalogfunktioner. |
| SQL_ATTR_ODBC_CURSORS (ODBC 2.0) | Ett SQLULEN-värde som specificerar hur Driver Manager använder ODBC-kursorbiblioteket: SQL_CUR_USE_IF_NEEDED = Driver Manager använder ODBC:s markörbibliotek endast om det behövs. Om drivrutinen stödjer SQL_FETCH_PRIOR-alternativet i SQLFetchScroll använder Driver Manager drivrutinens scrollfunktioner. Annars använder den ODBC:s markörbibliotek. SQL_CUR_USE_ODBC = Driver Manager använder ODBC:s markörbibliotek. SQL_CUR_USE_DRIVER = Driver Manager använder drivrutinens rullningsfunktioner. Det här är standardinställningen. För mer information om ODBC:s kursorbibliotek, se Appendix F: ODBC Cursor Library. Varning: Markörbiblioteket kommer att tas bort i en framtida version av Windows. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Microsoft rekommenderar att du använder drivrutinens markörfunktioner. |
| SQL_ATTR_PACKET_SIZE (ODBC 2.0) | Ett SQLUINTEGER-värde som specificerar nätverkspaketstorleken i byte.
Notera: Många datakällor stöder antingen inte detta alternativ eller kan bara returnera men inte sätta nätverkspaketets storlek. Om den angivna storleken överstiger maximal paketstorlek eller är mindre än minsta paketstorlek, ersätter drivrutinen det värdet och returnerar SQLSTATE 01S02 (Alternativvärde ändrat). Om applikationen sätter paketstorleken efter att en anslutning redan har gjorts, kommer drivrutinen att returnera SQLSTATE HY011 (Attribut kan inte sättas nu). |
| SQL_ATTR_QUIET_MODE (ODBC 2.0) | Ett fönsterhandtag (HWND). Om fönsterhandtaget är en nullpekare visar drivrutinen inga dialogrutor. Om fönsterhandtaget inte är en nullpekare bör det vara applikationens föräldrahandtag. Det här är standardinställningen. Drivrutinen använder detta handtag för att visa dialogrutor. Notera: Attributet SQL_ATTR_QUIET_MODE connection gäller inte för dialogrutor som visas av SQLDriverConnect. |
| SQL_ATTR_TRACE (ODBC 1.0) | Ett SQLUINTEGER-värde som talar om för Driver Manager om den ska utföra spårning: SQL_OPT_TRACE_OFF = Spårar av (standard) SQL_OPT_TRACE_ON = Spårar vidare När spårning är påslagen skriver Driver Manager varje ODBC-funktionsanrop till spårningsfilen. Notera: När spårning är påslagen kan Driver Manager returnera SQLSTATE IM013 (spårfilfel) från vilken funktion som helst. Ett program specificerar en spårfil med alternativet SQL_ATTR_TRACEFILE. Om filen redan finns, läggs Driver Manager till filen. Annars skapar den filen. Om spårning är påslagen och ingen spårningsfil har specificerats, skriver Driver Manager till filen SQL. LOG i rotkatalogen. En applikation kan ställa in variabeln ODBCSharedTraceFlag för att möjliggöra dynamisk spårning. Spårning aktiveras då för alla ODBC-applikationer som för närvarande körs. Om en applikation stänger av spårning, stängs den bara av för den applikationen. Om nyckelordet Trace i systeminformationen är satt till 1 när en applikation anropar SQLAllocHandle med HandleType SQL_HANDLE_ENV, aktiveras spårning för alla handtag. Den är endast aktiverad för applikationen som heter SQLAllocHandle. Att anropa SQLSetConnectAttr med ett attribut SQL_ATTR_TRACE kräver inte att argumentet ConnectionHandle är giltigt och kommer inte att returnera SQL_ERROR om ConnectionHandle är NULL. Denna egenskap gäller för alla anslutningar. |
| SQL_ATTR_TRACEFILE (ODBC 1.0) | En null-terminerad teckensträng som innehåller namnet på spårfilen. Standardvärdet för attributet SQL_ATTR_TRACEFILE anges med nyckelordet TraceFile i systeminformationen. För mer information, se ODBC Subkey. Att anropa SQLSetConnectAttrmed attributet SQL_ATTR_TRACEFILE kräver inte att argumentet ConnectionHandle är giltigt och kommer inte att returnera SQL_ERROR om ConnectionHandle är ogiltigt. Denna egenskap gäller för alla anslutningar. |
| SQL_ATTR_TRANSLATE_LIB (ODBC 1.0) | En null-terminerad teckensträng som innehåller namnet på ett bibliotek med funktionerna SQLDriverToDataSource och SQLDataSourceToDriver , som drivrutinen använder för att utföra uppgifter som teckenuppsättningsöversättning. Detta alternativ kan endast specificeras om drivrutinen har anslutit sig till datakällan. Inställningen av detta attribut kommer att bestå över anslutningar. För mer information om att översätta data, se Translation DLLs och Translation DLL Function Reference. |
| SQL_ATTR_TRANSLATE_OPTION (ODBC 1.0) | Ett 32-bitars flaggvärde som skickas till översättnings-DLL:n. Denna attribut kan endast specificeras om drivrutinen har anslutit sig till datakällan. För information om att översätta data, se Translation DLL:er. |
| SQL_ATTR_TXN_ISOLATION (ODBC 1.0) | En 32-bitars bitmask som sätter transaktionsisoleringsnivån för den aktuella anslutningen. En applikation måste anropa SQLEndTran för att committa eller rulla tillbaka alla öppna transaktioner på en anslutning, innan SQLSetConnectAttr kan anropas med detta alternativ. De giltiga värdena för ValuePtr kan bestämmas genom att anropa SQLGetInfo med InfoType lika med SQL_TXN_ISOLATION_OPTIONS. För en beskrivning av transaktionsisoleringsnivåer, se beskrivningen av informationstypen SQL_DEFAULT_TXN_ISOLATION i SQLGetInfo och Transaction Isolation Levels. |
[1] Dessa funktioner kan anropas asynkront endast om deskriptorn är en implementationsdeskriptor, inte en applikationsdeskriptor.
Kodexempel
Se SQLConnect.
Relaterade funktioner
| Mer information om | Se |
|---|---|
| Allokering av ett handtag | SQLAllocHandle-funktionen |
| Returnera inställningen för ett anslutningsattribut | SQLGetConnectAttr-funktion |