Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Soulad
Představená verze: ODBC 3.0 Shoda s normami: ISO 92
Summary
SQLSetConnectAttr nastavuje atributy, které řídí aspekty spojení.
Note
Pro více informací o tom, na co Driver Manager mapuje tuto funkci, když aplikace ODBC 3*.x* pracuje s ovladačem ODBC 2*.x*, viz Funkce nahrazování mapování pro zpětnou kompatibilitu aplikací.
Syntax
SQLRETURN SQLSetConnectAttr(
SQLHDBC ConnectionHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER StringLength);
Arguments
ConnectionHandle
[Vstup] Popisovač připojení.
Atribut
[Vstup] Atribut k množině, uvedeno v "Komentářích."
ValuePtr
[Vstup] Ukazatel na hodnotu, která má být spojena s atributem. V závislosti na hodnotě atributubude ValuePtr celočíselná hodnota bez znaménka nebo bude ukazovat na řetězec znaků ukončený nulovým počtem. Všimněte si, že integrální typ argumentu Attribute nemusí být pevně dlouhý, podrobnosti viz sekce Komentáře.
StringLength
[Vstup] Pokud je Attribute atribut definovaný ODBC a ValuePtr ukazuje na znakový řetězec nebo binární buffer, měl by být tento argument délka *ValuePtr. Pro data řetězce znaků by tento argument měl obsahovat počet bajtů v řetězci.
Pokud je Attribute atribut definovaný ODBC a ValuePtr je celé číslo, StringLength se ignoruje .
Pokud je Attribute atribut definovaný ovladačem, aplikace určuje povahu atributu Driver Manageru nastavením argumentu StringLength . StringLength může mít následující hodnoty:
Pokud je ValuePtr ukazatelem na řetězec znaků, pak StringLength je délka řetězce nebo SQL_NTS.
Pokud je ValuePtr ukazatelem na binární buffer, aplikace umístí výsledek makra SQL_LEN_BINARY_ATTR(length) do StringLength. To umisťuje zápornou hodnotu v StringLength.
Pokud je ValuePtr ukazatelem na hodnotu jinou než řetězec znaků nebo binární řetězec, pak by StringLength měla mít hodnotu SQL_IS_POINTER.
Pokud ValuePtr obsahuje hodnotu pevné délky, pak je StringLength buď SQL_IS_INTEGER, nebo SQL_IS_UINTEGER, jak je vhodné.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE nebo SQL_STILL_EXECUTING.
Diagnostika
Když SQLSetConnectAttr vrátí SQL_ERROR nebo SQL_SUCCESS_WITH_INFO, lze získat přidruženou hodnotu SQLstate, kterou lze získat voláním SQLGetDiagRec s HandleType SQL_HANDLE_DBC a HandlemConnectionHandle. Následující tabulka uvádí hodnoty SQLSTATE, které SQLSetConnectAttr běžně vrací, a vysvětluje každou z nich v kontextu této funkce; notace "(DM)" předchází popisům SQLstavů vráceným Správcem ovladačů. Návratový kód přidružený ke každé hodnotě SQLSTATE je SQL_ERROR, pokud není uvedeno jinak.
Řidič může SQL_SUCCESS_WITH_INFO vrátit a poskytnout informace o výsledku nastavení opce.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Obecné upozornění | Informační zpráva specifická pro řidiče (Funkce vrátí SQL_SUCCESS_WITH_INFO.) |
| 01S02 | Změna hodnoty možnosti | Ovladač nepodporoval hodnotu zadanou v ValuePtr a nahradil ji podobnou hodnotou. (Funkce vrátí SQL_SUCCESS_WITH_INFO.) |
| 08002 | Používaný název spojení | Argument Attribute byl SQL_ATTR_ODBC_CURSORS a ovladač byl již připojen ke zdroji dat. |
| 08003 | Připojení není otevřené | (DM) Byla určena hodnota atributu , která vyžadovala otevřené spojení, ale ConnectionHandle nebyl ve stavu připojení. |
| 08S01 | Selhání komunikačního propojení | Komunikační propojení mezi ovladačem a zdrojem dat, ke kterému byl ovladač připojen, selhalo před dokončením zpracování funkce. |
| 24000 | Neplatný stav kurzoru | Argument Attribute byl SQL_ATTR_CURRENT_CATALOG a výsledná sada byla v přípravě. |
| 25000 | Nelegální provoz během lokální transakce | Spojení bylo v lokální transakci při pokusu o připojení do distribuovaného transakčního spojení (DTC) nastavením atributu spojení SQL_ATTR_ENLIST_IN_DTC. Připojení je již zaznamenáno v DTC. Spojení bylo zapsáno do distribuovaného transakčního spojení a lokální transakce byla zahájena nastavením SQL_ATTR_AUTOCOMMIT na SQL_AUTOCOMMIT_OFF. |
| 3D000 | Neplatný název katalogu | Argument Attribute byl SQL_CURRENT_CATALOG a specifikovaný název katalogu byl neplatný. |
| HY000 | Obecná chyba | Došlo k chybě, pro kterou nebyla definována žádná specifická funkce SQLSTATE a pro kterou nebyla definována žádná implementace sqlSTATE. Chybová zpráva vrácená nástrojem SQLGetDiagRec v vyrovnávací paměti *MessageText popisuje chybu a její příčinu. |
| HY001 | Chyba přidělení paměti | Ovladač nemohl přidělit paměť potřebnou k podpoře provádění nebo dokončení funkce. |
| HY008 | Operace byla zrušena. | Asynchronní zpracování bylo povoleno pro ConnectionHandle. Byla vyvolána funkce SQLSetConnectAttr a před dokončením byla funkce SQLCancelHandle vyvolána na ConnectionHandle a poté byla funkce SQLSetConnectAttr znovu volána na ConnectionHandle. Nebo byla volána funkce SQLSetConnectAttr a před dokončením byla na ConnectionHandlevyvolána SQLCancelHandle z jiného vlákna v multithread aplikaci. |
| HY009 | Neplatné použití ukazatele null | Argument Attribute identifikoval atribut spojení, který vyžadoval hodnotu řetězce, a argument ValuePtr byl nulový ukazatel. |
| HY010 | Chyba posloupnosti funkcí | (DM) Byla volána asynchronně vykonávající funkce pro CommandHandle spojený s ConnectionHandle a stále se spouštěla, když byl vyvolán SQLSetConnectAttr . (DM) Asynchronně vykonávající funkce (ne tato) byla volána pro ConnectionHandle a stále se spouštěla, když byla tato funkce vyvolána. (DM) SQLExecute, SQLExecDirect nebo SQLMoreResults byl vyvolán pro jeden z příkazových rukojetí spojených s ConnectionHandle a vrátil SQL_PARAM_DATA_AVAILABLE. Tato funkce byla volána před načtením dat pro všechny streamované parametry. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations, nebo SQLSetPos byl vyvolán pro CommandHandle spojený s ConnectionHandle a vrátil SQL_NEED_DATA. Tato funkce byla volána před odesláním dat pro všechny parametry provádění dat nebo sloupce. (DM) SQLBrowseConnect byl vyvolán pro ConnectionHandle a vrátil SQL_NEED_DATA. Tato funkce byla vyvolána před tím, než SQLBrowseConnect vrátil SQL_SUCCESS_WITH_INFO nebo SQL_SUCCESS. |
| HY011 | Atribut nelze nyní nastavit | Argument Attribute byl SQL_ATTR_TXN_ISOLATION a transakce byla otevřena. |
| HY013 | Chyba správy paměti | Volání funkce nelze zpracovat, protože základní objekty paměti nelze získat přístup, pravděpodobně kvůli nedostatku paměti. |
| HY024 | Neplatná hodnota atributu | Při dané dané hodnotě atributu byla v ValuePtr zadána neplatná hodnota. (Driver Manager vrací tento stav SQL pouze pro atributy spojení a příkazy, které přijímají diskrétní množinu hodnot, například SQL_ATTR_ACCESS_MODE nebo SQL_ATTR_ASYNC_ENABLE. Pro všechny ostatní atributy spojení a příkazů musí ovladač ověřit hodnotu zadanou v ValuePtr.) Argument Attribute byl SQL_ATTR_TRACEFILE nebo SQL_ATTR_TRANSLATE_LIB a ValuePtr byl prázdný řetězec. |
| HY090 | Neplatná délka řetězce nebo vyrovnávací paměti | (DM) *ValuePtr je řetězec znaků a argument StringLength byl menší než 0, ale nebyl SQL_NTS. |
| HY092 | Neplatný identifikátor atributu/opce | (DM) Hodnota určená pro argument Attribute nebyla platná pro verzi ODBC podporovanou ovladačem. (DM) Hodnota určená pro atribut argumentu byla pouze pro čtení. |
| HY114 | Ovladač nepodporuje asynchronní provádění funkcí na úrovni spojení | (DM) Aplikace se pokusila povolit asynchronní provádění funkcí s SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE pro ovladač, který nepodporuje asynchronní operace spojení. |
| HY117 | Připojení je pozastaveno kvůli neznámému stavu transakce. Jsou povoleny pouze funkce pro odpojení a jen pro čtení. | (DM) Pro více informací o pozastaveném stavu viz SQLEndTran Function. |
| HY121 | Knihovna kurzorů a Driver-Aware Pooling nelze zapnout současně | Další informace najdete v tématu Driver-Aware sdružování připojení. |
| HYC00 | Nepovinná funkce není implementována. | Hodnota určená pro argument Attribute byla platným atributem ODBC connection nebo příkazem pro verzi ODBC podporovanou ovladačem, ale nepodporovanou ovladačem. |
| HYT01 | Vypršel časový limit připojení | Platnost časového limitu připojení vypršela, než zdroj dat odpověděl na žádost. Časový limit připojení je nastavený prostřednictvím sqlSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Ovladač tuto funkci nepodporuje. | (DM) Ovladač spojený s ConnectionHandle tuto funkci nepodporuje. |
| IM009 | Nelze načíst překlad DLL | Ovladač nebyl schopen načíst překlad DLL, který byl určen pro toto připojení. Tuto chybu lze vrátit pouze tehdy, když je Attribute SQL_ATTR_TRANSLATE_LIB. |
| IM017 | Dotazování je zakázané v asynchronním režimu oznámení. | Při každém použití modelu oznámení je dotazování zakázané. |
| IM018 | K dokončení předchozí asynchronní operace na tomto popisovači nebyla volána funkce SQLCompleteAsync. | Pokud předchozí volání funkce na popisovači vrátí SQL_STILL_EXECUTING a pokud je povolen režim oznámení, musí být sqlCompleteAsync volán na popisovači, aby bylo možné provést následné zpracování a dokončit operaci. |
| S1118 | Ovladač nepodporuje asynchronní notifikace | SQL_ATTR_ASYNC_DBC_EVENT bylo nastaveno (po navázání spojení), ale asynchronní notifikace není ovladačem podporována. |
Když je Attribute atribut příkazem, SQLSetConnectAttr může vrátit libovolné SQLSTATE vrácené SQLSetStmtAttr.
Comments
Pro obecné informace o atributech spojení viz Atributy spojení.
Aktuálně definované atributy a verze ODBC, ve které byly zavedeny, jsou uvedeny v tabulce později v této sekci; Očekává se, že bude definováno více atributů, aby bylo možné využít různé zdroje dat. ODBC vyrezervuje řadu atributů; vývojáři ovladačů si musí vyhradit hodnoty pro své vlastní použití specifické pro ovladače od Open Group.
Note
Možnost nastavit atributy příkazů na úrovni spojení voláním SQLSetConnectAttr byla v ODBC 3*.x* zrušena. Aplikace ODBC 3*.x* by nikdy neměly nastavovat atributy příkazů na úrovni připojení. Atributy příkazů ODBC 3*.x* nelze nastavit na úrovni spojení, s výjimkou atributů SQL_ATTR_METADATA_ID a SQL_ATTR_ASYNC_ENABLE, které jsou jak atributy spojení, tak příkazové atributy a lze je nastavit buď na úrovni spojení, nebo příkazu.
Ovladače ODBC 3*.x* musí tuto funkci podporovat pouze tehdy, pokud mají fungovat s aplikacemi ODBC 2*.x*, které nastavují příkazové možnosti ODBC 2*.x* na úrovni připojení. Více informací najdete v části SQLSetConnectOption Mapping v příloze G: Pokyny pro ovladače pro zpětnou kompatibilitu.
Aplikace může kdykoli mezi alokací a uvolněním spojení volat SQLSetConnectAttr . Všechny atributy spojení a příkazů úspěšně nastavené aplikací pro toto spojení přetrvávají až do doby, kdy je na spojení vyvolán SQLFreeHandle . Například pokud aplikace volá SQLSetConnectAttr před připojením ke zdroji dat, atribut přetrvává i v případě, že SQLSetConnectAttr v ovladači selže při připojení aplikace ke zdroji dat; Pokud aplikace nastaví atribut specifický pro ovladač, atribut přetrvává i v případě, že se aplikace připojí k jinému ovladači na připojení.
Některé atributy spojení lze nastavit pouze před navázáním spojení; jiné lze nastavit až po navázání spojení. Následující tabulka ukazuje atributy spojení, které je třeba nastavit buď před, nebo po navázání spojení. Oba označují , že atribut lze nastavit buď před, nebo po připojení.
| Attribute | Nastaveno před nebo po připojení? |
|---|---|
| SQL_ATTR_ACCESS_MODE | Buď[1] |
| SQL_ATTR_ASYNC_DBC_EVENT | Kteroukoli |
| SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE | Buď[4] |
| SQL_ATTR_ASYNC_DBC_PCALLBACK | Kteroukoli |
| SQL_ATTR_ASYNC_DBC_PCONTEXT | Kteroukoli |
| SQL_ATTR_ASYNC_ENABLE | Buď[2] |
| SQL_ATTR_AUTO_IPD | Kteroukoli |
| SQL_ATTR_AUTOCOMMIT | Buď[5] |
| SQL_ATTR_CONNECTION_DEAD | Po |
| SQL_ATTR_CONNECTION_TIMEOUT | Kteroukoli |
| SQL_ATTR_CURRENT_CATALOG | Buď[1] |
| SQL_ATTR_DBC_INFO_TOKEN | Po |
| SQL_ATTR_ENLIST_IN_DTC | Po |
| SQL_ATTR_LOGIN_TIMEOUT | před |
| SQL_ATTR_METADATA_ID | Kteroukoli |
| SQL_ATTR_ODBC_CURSORS | před |
| SQL_ATTR_PACKET_SIZE | před |
| SQL_ATTR_QUIET_MODE | Kteroukoli |
| SQL_ATTR_TRACE | Kteroukoli |
| SQL_ATTR_TRACEFILE | Kteroukoli |
| SQL_ATTR_TRANSLATE_LIB | Po |
| SQL_ATTR_TRANSLATE_OPTION | Po |
| SQL_ATTR_TXN_ISOLATION | Buď[3] |
[1] SQL_ATTR_ACCESS_MODE a SQL_ATTR_CURRENT_CATALOG lze nastavit před nebo po připojení v závislosti na ovladači. Interoperabilní aplikace je ale nastavují před připojením, protože některé ovladače tyto změny po připojení nepodporují.
[2] SQL_ATTR_ASYNC_ENABLE musí být nastaveno před aktivním výrokem.
[3] SQL_ATTR_TXN_ISOLATION lze nastavit pouze tehdy, pokud na spojení nejsou otevřené žádné transakce. Některé atributy spojení podporují substituci podobné hodnoty, pokud zdroj dat nepodporuje hodnotu zadanou v *ValuePtr. V takových případech ovladač vrací SQL_SUCCESS_WITH_INFO a SQLSTATE 01S02 (změna hodnoty volitele). Například pokud je Attribute SQL_ATTR_PACKET_SIZE a *ValuePtr překračuje maximální velikost paketu, ovladač dosadí maximální velikost. Pro určení substituované hodnoty aplikace volá SQLGetConnectAttr.
[4] Pokud je SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE nastaveno před otevřením spojení, správce ovladačů nastaví atribut ovladače při načtení ovladače během volání do SQLBrowseConnect, SQLConnct nebo SQLDriverConnect. Před hovorem do SQLBrowseConnect, SQLConnect nebo SQLDriverConnect správce ovladačů neví, ke kterému ovladači se má připojit, a neví, zda ovladač podporuje asynchronní operace spojení. Proto Driver Manager vždy vrací SQL_SUCCESS. Pokud však ovladač nepodporuje asynchronní operace spojení, volání SQLBrowseConnect, SQLConnct nebo SQLDriverConnect selže.
[5] Když je SQL_ATTR_AUTOCOMMIT nastaveno na FALSE, aplikace by měly volat SQLEndTran(SQL_ROLLBACK), pokud nějaké API SQL_ERROR vrátí, aby byla zajištěna transakční konzistence.
Formát informační sady v bufferu *ValuePtr závisí na specifikovaném atributu. SQLSetConnectAttr přijímá informace o atributech ve dvou různých formátech: jako znak ukončený nulovou kategorií nebo jako celočíselnou hodnotu. Formát každého je uveden v popisu atributu. Znakové řetězce označené argumentem ValuePtr v SQLSetConnectAttr mají délku bajtů StringLength .
Argument StringLength se ignoruje, pokud je délka definována atributem, což je případ všech atributů zavedených v ODBC 2*.x* nebo starších.
| Atribut | Obsah ValuePtr |
|---|---|
| SQL_ATTR_ACCESS_MODE (ODBC 1.0) | Hodnota SQLUINTEGER. SQL_MODE_READ_ONLY používá ovladač nebo datový zdroj jako indikátor, že připojení není nutné k podpoře SQL příkazů, které způsobují aktualizace. Tento režim lze využít k optimalizaci strategií zamykání, správy transakcí nebo dalších oblastí podle potřeby ovladače nebo zdroje dat. Řidič není povinen zabránit zasílání takových výpisů do datového zdroje. Chování ovladače a zdroje dat při zpracování SQL příkazů, které nejsou pouze pro čtení, během připojení pouze pro čtení, je definováno implementací. SQL_MODE_READ_WRITE je výchozí. |
| SQL_ATTR_ASYNC_DBC_EVENT (ODBC 3.8) | Hodnota SQLPOINTER, která je handlem události. Oznámení o dokončení asynchronních funkcí je zapnuto vyvoláním SQLSetConnectAttr s atributem SQL_ATTR_ASYNC_STMT_EVENT a zadáním handle události. Poznámka: Metoda upozornění není podporována v knihovně kurzorů. Aplikace obdrží chybovou zprávu, pokud se pokusí povolit knihovnu kurzoru prostřednictvím SQLSetConnectAttr, když je povolena metoda oznámení. |
| SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE (ODBC 3,8) | Hodnota SQLUINTEGER, která umožňuje nebo zakazuje asynchronní provádění vybraných funkcí na rozhraní spojení. Další informace naleznete v tématu Asynchronní spuštění (metoda dotazování). SQL_ASYNC_DBC_ENABLE_ON = Povolit asynchronní provoz pro specifikované funkce související s připojením. SQL_ASYNC_DBC_ENABLE_OFF = (výchozí) Vypnout asynchronní provoz pro specifikované funkce související s připojením. Nastavení SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE je vždy synchronní (to znamená, že se nikdy nevrátí SQL_STILL_EXECUTING). Asynchronní provádění příkazových operací je umožněno pomocí SQL_ATTR_ASYNC_ENABLE. |
| SQL_ATTR_ASYNC_DBC_PCALLBACK (ODBC 3.8) | Hodnota SQLPOINTER, která ukazuje na kontextovou strukturu. Pouze správce ovladačů může volat funkci SQLSetStmtAttr ovladače s tímto atributem. |
| SQL_ATTR_ASYNC_DBC_PCONTEXT (ODBC 3.8) | Hodnota SQLPOINTER, která ukazuje na kontextovou strukturu. Pouze správce ovladačů může volat funkci SQLSetStmtAttr ovladače s tímto atributem. |
| SQL_ATTR_ASYNC_ENABLE (ODBC 3.0) | Hodnota SQLULEN, která určuje, zda je funkce volaná příkazem na specifikované spojení vykonána asynchronně: SQL_ASYNC_ENABLE_OFF = Vypnout podporu asynchronního provádění na úrovni připojení pro příkazové operace (výchozí). SQL_ASYNC_ENABLE_ON = Povolit asynchronní podporu pro operace příkazů na úrovni spojení. Tento atribut lze nastavit, zda SQLGetInfo s typem informací SQL_ASYNC_MODE vrací SQL_AM_CONNECTION nebo SQL_AM_STATEMENT. |
| SQL_ATTR_AUTO_IPD (ODBC 3.0) | Pouze čtecí SQLUINTEGER hodnota, která určuje, zda je podporováno automatické naplnění IPD po volání SQLPrepare : SQL_TRUE = Automatické naplnění IPD po volání do SQLPrepare je podporováno ovladačem. SQL_FALSE = Automatické naplnění IPD po volání do SQLPrepare není ovladačem podporováno. Servery, které nepodporují připravené výkazy, nebudou schopny automaticky naplnit IPD. Pokud je pro atribut SQL_ATTR_AUTO_IPD connection vráceno SQL_TRUE, lze nastavit příkazový atribut SQL_ATTR_ENABLE_AUTO_IPD tak, aby automaticky zapnul nebo vypnul populaci IPD. Pokud je SQL_ATTR_AUTO_IPD SQL_FALSE, nelze SQL_ATTR_ENABLE_AUTO_IPD nastavit na SQL_TRUE. Výchozí hodnota SQL_ATTR_ENABLE_AUTO_IPD je rovna hodnotě SQL_ATTR_AUTO_IPD. Tento atribut spojení může vrátit SQLGetConnectAttr , ale nelze jej nastavit pomocí SQLSetConnectAttr. |
| SQL_ATTR_AUTOCOMMIT (ODBC 1.0) | Hodnota SQLUINTEGER, která určuje, zda použít autocommit nebo manuální commit režim: SQL_AUTOCOMMIT_OFF = Ovladač používá režim manuálního potvrzení a aplikace musí explicitně potvrdit nebo vrátit transakce zpět pomocí SQLEndTran. SQL_AUTOCOMMIT_ON = Ovladač používá režim automatického závazku. Každý příkaz je zaznamenán ihned po provedení. Toto je výchozí hodnota. Veškeré otevřené transakce na spojení jsou potvrzeny, když je SQL_ATTR_AUTOCOMMIT nastaveno na SQL_AUTOCOMMIT_ON pro přechod z režimu manuálního potvrzení na automatický potvrzení. Pro více informací viz Režim závazku. Důležité: Některé zdroje dat mažou plány přístupu a zavírají kurzory pro všechny příkazy na spojení pokaždé, když je příkaz potvrzen; Režim automatického potvrzení může způsobit, že k tomu dojde po každém příkazu bez dotazu nebo po uzavření kurzoru pro dotaz. Pro více informací viz typy informací SQL_CURSOR_COMMIT_BEHAVIOR a SQL_CURSOR_ROLLBACK_BEHAVIOR v SQLGetInfo a Vliv transakcí na kurzory a připravené výpisy. Když je batch vykonán v režimu automatického závazku, jsou možné dvě věci. Celá dávka může být považována za automatickou jednotku, nebo každý příkaz v dávce je považován za automatickou jednotku. Některé zdroje dat mohou podpořit obě tyto chování a mohou nabídnout způsob, jak si vybrat jedno nebo druhé. Je definováno ovladačem, zda je dávka považována za samocommitovatelnou jednotku, nebo zda je každý jednotlivý příkaz v dávce automaticky commitovatelný. |
| SQL_ATTR_CONNECTION_DEAD (ODBC 3.5) |
Pouze pro čtení je to SQLUINTEGER hodnota, která indikuje stav spojení. Pokud SQL_CD_TRUE, spojení bylo ztraceno. Pokud SQL_CD_FALSE, spojení je stále aktivní. |
| SQL_ATTR_CONNECTION_TIMEOUT (ODBC 3.0) | Hodnota SQLUINTEGER odpovídající počtu sekund čekajících na dokončení jakéhokoli požadavku na spojení před návratem do aplikace. Ovladač by měl vracet SQLSTATE HYT00 (Timeout expired) kdykoli je možné vypršet čas v situaci, která není spojena s provedením dotazu nebo přihlášením. Pokud je hodnota Ptr rovna 0 (výchozí), není časový limit. |
| SQL_ATTR_CURRENT_CATALOG (ODBC 2.0) | Znakový řetězec obsahující název katalogu, který má být použit datovým zdrojem. Například v SQL Server je katalog databáze, takže ovladač odešle databázový příkaz USE datovému zdroji, kde database je databáze specifikovaná v *ValuePtr. U jednovrstvého ovladače může být katalog adresář, takže ovladač změní svůj aktuální adresář na adresář specifikovaný v *ValuePtr. |
| SQL_ATTR_DBC_INFO_TOKEN (ODBC 3.8 | Hodnota SQLPOINTER používaná k vrácení tokenu informací o spojení do DBC handle, když parametr SQLRateConnection (*pRating) není roven 100. SQL_ATTR_DBC_INFO_TOKEN je pouze pro set. Není možné použít SQLGetConnectAttr nebo SQLGetConnectOption k získání této hodnoty. SQLSetConnectAttr ve Správci ovladačů SQL_ATTR_DBC_INFO_TOKEN nepřijme, protože aplikace by tento atribut nastavit neměla. Pokud ovladač po nastavení SQL_ATTR_DBC_INFO_TOKEN vrátí SQL_ERROR, spojení právě získané z poolu bude uvolněno. Správce ovladačů se pak pokusí získat další spojení z poolu. Více informací naleznete v článku Rozvoj Connection-Pool povědomí v řidiči ODBC. |
| SQL_ATTR_ENLIST_IN_DTC (ODBC 3.0) | Hodnota SQLPOINTER, která určuje, zda použít ovladač ODBC v distribuovaných transakcích koordinovaných Microsoft Component Services. Předejte transakční objekt DTC OLE, který specifikuje transakci pro export do SQL Server, nebo SQL_DTC_DONE ukončit DTC asociaci spojení. Klient volá metodu služba MS DTC (Microsoft Distributed Transaction Coordinator) (MS DTC) OLE ITransactionDispenser::BeginTransaction, aby zahájil transakci MS DTC a vytvořil objekt transakce MS DTC, který transakci reprezentuje. Aplikace poté volá SQLSetConnectAttr s možností SQL_ATTR_ENLIST_IN_DTC přiřadit transakční objekt s ODBC spojením. Veškerá související databázová aktivita bude prováděna pod ochranou transakce MS DTC. Aplikace volá SQLSetConnectAttr s SQL_DTC_DONE ukončí DTC asociaci spojení. Další informace naleznete v dokumentaci MS DTC. |
| SQL_ATTR_LOGIN_TIMEOUT (ODBC 1.0) | Hodnota SQLUINTEGER odpovídající počtu sekund čekajících na dokončení přihlašovacího požadavku před návratem do aplikace. Výchozí je závislé na ovladači. Pokud je ValuePtr 0, timeout je deaktivován a pokus o připojení čeká neomezeně dlouho. Pokud specifikovaný časový limit překročí maximální časový limit přihlášení ve zdroji dat, ovladač tuto hodnotu nahradí a vrátí SQLSTATE 01S02 (Option value změněna). |
| SQL_ATTR_METADATA_ID (ODBC 3.0) | SQLUINTEGER hodnota, která určuje, jak jsou zacházeny s argumenty řetězců katalogových funkcí. Pokud SQL_TRUE, argument řetězce katalogových funkcí je považován za identifikátory. Případ není významný. U nerozdělených řetězců driver odstraní všechny zadní mezery a řetězec se přeloží na velká písmena. Pro omezené řetězce driver odstraní všechny vedoucí nebo zadní mezery a vezme doslova cokoli, co je mezi oddělovači. Pokud je jeden z těchto argumentů nastaven na nulový ukazatel, funkce vrátí SQL_ERROR a SQLSTATE HY009 (Neplatné použití nulového ukazatele). Pokud SQL_FALSE, argumenty řetězců katalogových funkcí nejsou považovány za identifikátory. Případ je významný. Mohou obsahovat vzor vyhledávání řetězců nebo neobsahovat, v závislosti na argumentu. Výchozí hodnota je SQL_FALSE. Argument TableTypev SQLTables, který přijímá seznam hodnot, není tímto atributem ovlivněn. SQL_ATTR_METADATA_ID lze také nastavit na úrovni příkazů. (Je to jediný atribut spojení, který je zároveň atributem příkazu.) Další informace naleznete v tématu Argumenty funkce katalogu. |
| SQL_ATTR_ODBC_CURSORS (ODBC 2.0) | Hodnota SQLULEN specifikující, jak správce ovladačů používá knihovnu kurzorů ODBC: SQL_CUR_USE_IF_NEEDED = Správce ovladačů používá knihovnu kurzorů ODBC pouze tehdy, pokud je to potřeba. Pokud ovladač podporuje možnost SQL_FETCH_PRIOR v SQLFetchScroll, Správce ovladačů využívá možnosti posouvání ovladače. Jinak používá knihovnu kurzorů ODBC. SQL_CUR_USE_ODBC = Správce ovladačů používá knihovnu kurzorů ODBC. SQL_CUR_USE_DRIVER = Správce ovladačů využívá možnosti posouvání ovladače. Toto je výchozí nastavení. Pro více informací o knihovně kurzorů ODBC viz příloha F: Knihovna kurzorů ODBC. Varování: Knihovna kurzorů bude v budoucí verzi Windows odstraněna. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Microsoft doporučuje používat funkci kurzoru ovladače. |
| SQL_ATTR_PACKET_SIZE (ODBC 2.0) | Hodnota SQLUINTEGER určující velikost síťového paketu v bajtech.
Poznámka: Mnoho datových zdrojů tuto možnost buď nepodporuje, nebo může pouze vrátit, ale nenastavit velikost síťového paketu. Pokud specifikovaná velikost překročí maximální velikost paketu nebo je menší než minimální velikost paketu, ovladač tuto hodnotu dosadí a vrátí SQLSTATE 01S02 (Option value změněna). Pokud aplikace nastaví velikost paketu poté, co už bylo spojení navázáno, ovladač vrátí SQLSTATE HY011 (Attribute nelze nyní nastavit). |
| SQL_ATTR_QUIET_MODE (ODBC 2.0) | Okenní klika (HWND). Pokud je rukojeť okna nulovým ukazatelem, ovladač nezobrazuje žádná dialogová okna. Pokud očka okna není nulový ukazatel, měla by být nadřazenou rukoječkou okna aplikace. Toto je výchozí hodnota. Ovladač používá tuto rukojeť k zobrazení dialogových oken. Poznámka: Atribut SQL_ATTR_QUIET_MODE connection se nevztahuje na dialogová okna zobrazovaná v SQLDriverConnect. |
| SQL_ATTR_TRACE (ODBC 1.0) | SQLUINTEGER hodnota, která Driver Manageru říká, zda má provést trasování: SQL_OPT_TRACE_OFF = Sledování (výchozí) SQL_OPT_TRACE_ON = Sledování Když je sledování zapnuté, Driver Manager zapisuje každé volání funkce ODBC do souboru trasy. Poznámka: Když je trasování zapnuté, správce ovladačů může vrátit SQLSTATE IM013 (chyba trace souboru) z libovolné funkce. Aplikace specifikuje trace soubor s možností SQL_ATTR_TRACEFILE. Pokud soubor již existuje, Driver Manager se k souboru přidá. Jinak soubor vytvoří. Pokud je trasování zapnuté a žádný trace soubor nebyl specifikován, Driver Manager zapisuje do souboru SQL. LOG do kořenového adresáře. Aplikace může nastavit proměnnou ODBCSharedTraceFlag pro dynamické trasování. Trasování je pak povoleno pro všechny aktuálně běžící ODBC aplikace. Pokud aplikace trasování vypne, je vypnuto pouze pro danou aplikaci. Pokud je klíčové slovo Trace v systémových informacích nastaveno na 1, když aplikace volá SQLAllocHandle s HandleType SQL_HANDLE_ENV, je trasování povoleno pro všechny handle. Je povolen pouze pro aplikaci s názvem SQLAllocHandle. Volání SQLSetConnectAttr s atributem SQL_ATTR_TRACE nevyžaduje, aby argument ConnectionHandle byl platný, a nevrátí SQL_ERROR, pokud je ConnectionHandle NULL. Tato vlastnost platí pro všechna spojení. |
| SQL_ATTR_TRACEFILE (ODBC 1.0) | Null-ukončený znakový řetězec obsahující název sledovacího souboru. Výchozí hodnota atributu SQL_ATTR_TRACEFILE je zadána klíčovým slovem TraceFile v systémových informacích. Pro více informací viz ODBC Subkey. Volání SQLSetConnectAttr s atributem SQL_ATTR_TRACEFILE nevyžaduje, aby byl argument ConnectionHandle platný, a nevrátí SQL_ERROR, pokud je ConnectionHandle neplatný. Tato vlastnost platí pro všechna spojení. |
| SQL_ATTR_TRANSLATE_LIB (ODBC 1.0) | Znakový řetězec s nulovým ukončením obsahující název knihovny obsahující funkce SQLDriverToDataSource a SQLDataSourceToDriver , ke kterým ovladač přistupuje k provádění úkolů, jako je překlad znakové sady. Tato možnost může být specifikována pouze tehdy, pokud se ovladač připojil ke zdroji dat. Nastavení tohoto atributu přetrvává napříč spojeními. Pro více informací o překladu dat viz Translation DLL a Translation DLL Function Reference. |
| SQL_ATTR_TRANSLATE_OPTION (ODBC 1.0) | 32bitová hodnota příznaku, která je předávána překladu DLL. Tento atribut lze zadat pouze tehdy, pokud se ovladač připojil ke zdroji dat. Informace o překladu dat najdete v sekci Translation DLL. |
| SQL_ATTR_TXN_ISOLATION (ODBC 1.0) | 32bitová bitová maska, která nastavuje úroveň izolace transakce pro aktuální připojení. Aplikace musí zavolat SQLEndTran , aby potvrdila nebo vrátila zpět všechny otevřené transakce na spojení, než zavolá SQLSetConnectAttr s touto možností. Platné hodnoty pro ValuePtr lze určit voláním SQLGetInfo s InfoType rovným SQL_TXN_ISOLATION_OPTIONS. Pro popis úrovní izolace transakcí viz popis SQL_DEFAULT_TXN_ISOLATION informačního typu v SQLGetInfo a úrovních izolace transakcí. |
[1] Tyto funkce lze volat asynchronně pouze tehdy, pokud je deskriptor implementační, nikoli aplikační.
Příklad kódu
Viz SQLConnect.
Související funkce
| Informace o | Podívejte se |
|---|---|
| Přiřazení rukojeti | SQLAllocHandle Function |
| Vrácení nastavení atributu připojení | FUNKCE SQLGetConnectAttr |