Pagina relativa alla funzione SQLSetConnectAttr

Conformità
Versione introdotta: Conformità agli standard ODBC 3.0: ISO 92

Summary
SQLSetConnectAttr imposta gli attributi che regolano gli aspetti delle connessioni.

Nota

Per altre informazioni sul mapping di questa funzione da parte di Gestione driver quando un'applicazione ODBC 3 .x funziona con un driver ODBC 2 .x, vedere Mapping Replacement Functions for Backward Compatibility of Applications.

Sintassi

  
SQLRETURN SQLSetConnectAttr(  
     SQLHDBC       ConnectionHandle,  
     SQLINTEGER    Attribute,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    StringLength);  

Argomenti

ConnectionHandle
[Input] Handle di connessione.

Attributo
[Input] Attributo da impostare, elencato in "Commenti".

ValuePtr
[Input] Puntatore al valore da associare all'attributo. A seconda del valore di Attribute, ValuePtr sarà un valore intero senza segno o farà riferimento a una stringa di caratteri con terminazione Null. Si noti che il tipo integrale dell'argomento Attribute potrebbe non essere di lunghezza fissa. Per informazioni dettagliate, vedere la sezione Commenti.

StringLength
[Input] Se Attribute è un attributo definito da ODBC e ValuePtr punta a una stringa di caratteri o a un buffer binario, questo argomento deve essere la lunghezza di *ValuePtr. Per i dati di tipo stringa di caratteri, questo argomento deve contenere il numero di byte nella stringa.

Se Attribute è un attributo definito da ODBC e ValuePtr è un integer, StringLength viene ignorato.

Se Attribute è un attributo definito dal driver, l'applicazione indica la natura dell'attributo in Gestione driver impostando l'argomento StringLength. StringLength può avere i valori seguenti:

  • Se ValuePtr è un puntatore a una stringa di caratteri, StringLength è la lunghezza della stringa o SQL_NTS.

  • Se ValuePtr è un puntatore a un buffer binario, l'applicazione inserisce il risultato della macro SQL_LEN_BINARY_ATTR(length) in StringLength. Inserisce un valore negativo in StringLength.

  • Se ValuePtr è un puntatore a un valore diverso da una stringa di caratteri o una stringa binaria, StringLength deve avere il valore SQL_IS_POINTER.

  • Se ValuePtr contiene un valore a lunghezza fissa, StringLength è SQL_IS_INTEGER o SQL_IS_UINTEGER, in base alle esigenze.

Restituisce

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE o SQL_STILL_EXECUTING.

Diagnostica

Quando SQLSetConnectAttr restituisce SQL_ERROR o SQL_SUCCESS_WITH_INFO, è possibile ottenere un valore SQLSTATE associato chiamando SQLGetDiagRec con handletype SQL_HANDLE_DBC e handle di ConnectionHandle. La tabella seguente elenca i valori SQLSTATE comunemente restituiti da SQLSetConnectAttr e ne illustra ognuno nel contesto di questa funzione. la notazione "(DM)" precede le descrizioni di SQLSTATE restituite da Gestione driver. Il codice restituito associato a ogni valore SQLSTATE è SQL_ERROR, se non specificato diversamente.

Il driver può restituire SQL_SUCCESS_WITH_INFO per fornire informazioni sul risultato dell'impostazione di un'opzione.

SQLSTATE Errore Descrizione
01000 Avviso generale Messaggio informativo specifico del driver. La funzione restituisce SQL_SUCCESS_WITH_INFO.
01S02 Valore dell'opzione modificato Il driver non supporta il valore specificato in ValuePtr e sostituisce un valore simile. La funzione restituisce SQL_SUCCESS_WITH_INFO.
08002 Nome connessione in uso L'argomento Attribute SQL_ATTR_ODBC_CURSORS e il driver era già connesso all'origine dati.
08003 Connessione non aperta (DM) È stato specificato un valore Attribute che richiedeva una connessione aperta, ma ConnectionHandle non era in uno stato connesso.
08S01 Errore del collegamento di comunicazione Il collegamento di comunicazione tra il driver e l'origine dati a cui è stato connesso il driver non è riuscito prima del completamento dell'elaborazione della funzione.
24000 Stato del cursore non valido L'argomento Attribute è SQL_ATTR_CURRENT_CATALOG ed è in sospeso un set di risultati.
25000 Operazione non valida in una transazione locale Una connessione era in una transazione locale durante il tentativo di integrazione in una connessione di transazione distribuita (DTC) impostando l'attributo di connessione SQL_ATTR_ENLIST_IN_DTC.

Una connessione è già integrata in un DTC.

Una connessione è stata integrata in una connessione di transazione distribuita ed è stata avviata una transazione locale impostando SQL_ATTR_AUTOCOMMIT su SQL_AUTOCOMMIT_OFF.
3D000 Nome di catalogo non valido L'argomento Attribute è SQL_CURRENT_CATALOG e il nome di catalogo specificato non è valido.
HY000 Errore generale: Si è verificato un errore per il quale non esiste un SQLSTATE specifico e per il quale non è stato definito sqlSTATE specifico dell'implementazione. Il messaggio di errore restituito da SQLGetDiagRec nel buffer * MessageText descrive l'errore e la relativa causa.
HY001 Errore di allocazione della memoria Il driver non è riuscito ad allocare la memoria necessaria per supportare l'esecuzione o il completamento della funzione.
HY008 Operation canceled L'elaborazione asincrona è stata abilitata per ConnectionHandle. È stata chiamata la funzione SQLSetConnectAttr e, prima del completamento dell'esecuzione, è stata chiamata la funzione SQLCancelHandle su ConnectionHandle e quindi la funzione SQLSetConnectAttr è stata chiamata nuovamente su ConnectionHandle.

In caso contrario, è stata chiamata la funzione SQLSetConnectAttr e prima del completamento dell'esecuzione è stato chiamato SQLCancelHandle su ConnectionHandle da un thread diverso in un'applicazione multithreading.
HY009 Uso non valido del puntatore Null L'argomento Attribute ha identificato un attributo di connessione che richiede un valore stringa e l'argomento ValuePtr è un puntatore Null.
HY010 Errore della sequenza di funzione (DM) È stata chiamata una funzione in esecuzione in modo asincrono per un StatementHandle associato a ConnectionHandle ed era ancora in esecuzione quando è stato chiamato SQLSetConnectAttr.

(DM) Una funzione in esecuzione in modo asincrono (non questa) è stata chiamata per ConnectionHandle ed era ancora in esecuzione quando è stata chiamata questa funzione.

(DM) SQLExecute, SQLExecDirect o SQLMoreResults è stato chiamato per uno degli handle di istruzione associati a ConnectionHandle e restituito SQL_PARAM_DATA_AVAILABLE. Questa funzione è stata chiamata prima del recupero dei dati per tutti i parametri trasmessi.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations o SQLSetPos sono stati chiamati per un StatementHandle associato a ConnectionHandle e sono stati restituiti SQL_NEED_DATA. Questa funzione è stata chiamata prima dell'invio dei dati per tutti i parametri o le colonne data-at-execution.

(DM) SQLBrowseConnect è stato chiamato per ConnectionHandle e ha restituito SQL_NEED_DATA. Questa funzione è stata chiamata prima che SQLBrowseConnect SQL_SUCCESS_WITH_INFO o SQL_SUCCESS.
HY011 L'attributo non può essere impostato ora L'argomento Attribute è SQL_ATTR_TXN_ISOLATION ed è stata aperta una transazione.
HY013 Errore di gestione della memoria Non è stato possibile elaborare la chiamata di funzione perché non è stato possibile accedere agli oggetti di memoria sottostanti, probabilmente a causa di condizioni di memoria insufficiente.
HY024 Valore di attributo non valido Dato il valore Attribute specificato, è stato specificato un valore non valido in ValuePtr. Gestione driver restituisce questo VALORE SQLSTATE solo per gli attributi di connessione e istruzione che accettano un set discreto di valori, ad esempio SQL_ATTR_ACCESS_MODE o SQL_ATTR_ASYNC_ENABLE. Per tutti gli altri attributi di connessione e istruzione, il driver deve verificare il valore specificato in ValuePtr.

L'argomento Attribute SQL_ATTR_TRACEFILE o SQL_ATTR_TRANSLATE_LIB e ValuePtr è una stringa vuota.
HY090 Lunghezza della stringa o del buffer non valida (DM) * ValuePtr è una stringa di caratteri e l'argomento StringLength è minore di 0, ma non SQL_NTS.
HY092 Identificatore di attributo/opzione non valido (DM) Il valore specificato per l'argomento Attribute non è valido per la versione di ODBC supportata dal driver.

(DM) Il valore specificato per l'argomento Attribute era un attributo di sola lettura.
HY114 Il driver non supporta l'esecuzione di funzioni asincrone a livello di connessione (DM) Un'applicazione ha tentato di abilitare l'esecuzione di funzioni asincrone con SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE per un driver che non supporta le operazioni di connessione asincrone.
HY117 La connessione è stata sospesa a causa di uno stato di transazione sconosciuto. Sono consentite solo funzioni di disconnessione e di sola lettura. (DM) Per altre informazioni sullo stato sospeso, vedere Funzione SQLEndTran.
HY121 La libreria di cursori Driver-Aware pooling non può essere abilitata contemporaneamente Per altre informazioni, vedere Pool di connessioni in grado di riconoscere i driver.
HYC00 Funzionalità facoltativa non implementata Il valore specificato per l'argomento Attribute è un attributo di connessione o istruzione ODBC valido per la versione di ODBC supportata dal driver, ma non supportata dal driver.
HYT01 Timeout della connessione scaduto Il periodo di timeout della connessione è scaduto prima che l'origine dati risponda alla richiesta. Il periodo di timeout della connessione viene impostato tramite SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Il driver non supporta questa funzione (DM) Il driver associato a ConnectionHandle non supporta la funzione .
IM009 Impossibile caricare la DLL di conversione Il driver non è stato in grado di caricare la DLL di conversione specificata per la connessione. Questo errore può essere restituito solo quando attributo è SQL_ATTR_TRANSLATE_LIB.
IM017 Il polling è disabilitato in modalità di notifica asincrona Ogni volta che viene usato il modello di notifica, il polling è disabilitato.
IM018 SQLCompleteAsync non è stato chiamato per completare l'operazione asincrona precedente su questo handle. Se la chiamata di funzione precedente sull'handle restituisce SQL_STILL_EXECUTING e se la modalità di notifica è abilitata, è necessario chiamare SQLCompleteAsync sull'handle per eseguire la post-elaborazione e completare l'operazione.
S1118 Il driver non supporta la notifica asincrona SQL_ATTR_ASYNC_DBC_EVENT stato impostato (dopo la connessione) ma la notifica asincrona non è supportata dal driver.

Quando Attribute è un attributo di istruzione, SQLSetConnectAttr può restituire qualsiasi SQLSTATEs restituito da SQLSetStmtAttr.

Commenti

Per informazioni generali sugli attributi di connessione, vedere Attributi di connessione.

Gli attributi attualmente definiti e la versione di ODBC in cui sono stati introdotti sono illustrati nella tabella più avanti in questa sezione. è previsto che verranno definiti più attributi per sfruttare i vantaggi di origini dati diverse. Un intervallo di attributi è riservato da ODBC. Gli sviluppatori di driver devono riservare valori per il proprio uso specifico del driver da Open Group.

Nota

La possibilità di impostare gli attributi dell'istruzione a livello di connessione chiamando SQLSetConnectAttr è stata deprecata in ODBC 3 .x. Le applicazioni ODBC 3 .x non devono mai impostare attributi di istruzione a livello di connessione. Gli attributi dell'istruzione ODBC 3 .x non possono essere impostati a livello di connessione, ad eccezione degli attributi SQL_ATTR_METADATA_ID e SQL_ATTR_ASYNC_ENABLE, che sono attributi di connessione e attributi di istruzione e possono essere impostati a livello di connessione o di istruzione.

I driver ODBC 3 .x devono supportare questa funzionalità solo se devono funzionare con applicazioni ODBC 2 .x che impostano le opzioni di istruzione ODBC 2 .x a livello di connessione. Per altre informazioni, vedere Mapping di SQLSetConnectOption nell'appendice G: Linee guida per i driver per la compatibilità con le versioni precedenti.

Un'applicazione può chiamare SQLSetConnectAttr in qualsiasi momento tra il momento in cui la connessione viene allocata e liberata. Tutti gli attributi di connessione e istruzione impostati correttamente dall'applicazione per la connessione vengono mantenuti fino a quando non viene chiamato SQLFreeHandle sulla connessione. Ad esempio, se un'applicazione chiama SQLSetConnectAttr prima di connettersi a un'origine dati, l'attributo viene mantenuto anche se SQLSetConnectAttr ha esito negativo nel driver quando l'applicazione si connette all'origine dati. se un'applicazione imposta un attributo specifico del driver, l'attributo viene mantenuto anche se l'applicazione si connette a un driver diverso nella connessione.

Alcuni attributi di connessione possono essere impostati solo prima che sia stata stabilita una connessione. altri possono essere impostati solo dopo che è stata stabilita una connessione. La tabella seguente indica gli attributi di connessione che devono essere impostati prima o dopo che è stata stabilita una connessione. Indica che l'attributo può essere impostato prima o dopo la connessione.

Attributo Impostare prima o dopo la connessione?
SQL_ATTR_ACCESS_MODE Either[1]
SQL_ATTR_ASYNC_DBC_EVENT Prima o dopo
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE Either[4]
SQL_ATTR_ASYNC_DBC_PCALLBACK Prima o dopo
SQL_ATTR_ASYNC_DBC_PCONTEXT Prima o dopo
SQL_ATTR_ASYNC_ENABLE Either[2]
SQL_ATTR_AUTO_IPD Prima o dopo
SQL_ATTR_AUTOCOMMIT Either[5]
SQL_ATTR_CONNECTION_DEAD After
SQL_ATTR_CONNECTION_TIMEOUT Prima o dopo
SQL_ATTR_CURRENT_CATALOG Either[1]
SQL_ATTR_DBC_INFO_TOKEN After
SQL_ATTR_ENLIST_IN_DTC After
SQL_ATTR_LOGIN_TIMEOUT Prima
SQL_ATTR_METADATA_ID Prima o dopo
SQL_ATTR_ODBC_CURSORS Prima
SQL_ATTR_PACKET_SIZE Prima
SQL_ATTR_QUIET_MODE Prima o dopo
SQL_ATTR_TRACE Prima o dopo
SQL_ATTR_TRACEFILE Prima o dopo
SQL_ATTR_TRANSLATE_LIB After
SQL_ATTR_TRANSLATE_OPTION After
SQL_ATTR_TXN_ISOLATION Either[3]

[1] SQL_ATTR_ACCESS_MODE e SQL_ATTR_CURRENT_CATALOG possono essere impostati prima o dopo la connessione, a seconda del driver. Tuttavia, le applicazioni interoperativi le impostano prima della connessione perché alcuni driver non supportano la modifica dopo la connessione.

[2] SQL_ATTR_ASYNC_ENABLE deve essere impostato prima che sia presente un'istruzione attiva.

[3] SQL_ATTR_TXN_ISOLATION possibile impostare solo se non sono presenti transazioni aperte nella connessione. Alcuni attributi di connessione supportano la sostituzione di un valore simile se l'origine dati non supporta il valore specificato in * ValuePtr. In questi casi, il driver restituisce SQL_SUCCESS_WITH_INFO e SQLSTATE 01S02 (valore opzione modificato). Ad esempio, se Attribute è SQL_ATTR_PACKET_SIZE e ValuePtr supera le dimensioni massime del pacchetto, il driver * sostituisce le dimensioni massime. Per determinare il valore sostituito, un'applicazione chiama SQLGetConnectAttr.

[4] Se SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE è impostato prima dell'apertura di una connessione, Gestione driver imposta l'attributo del driver quando il driver viene caricato durante una chiamata a SQLBrowseConnect, SQLConnect o SQLDriverConnect. Prima di una chiamata a SQLBrowseConnect, SQLConnect o SQLDriverConnect, Gestione driver non conosce il driver a cui connettersi e non sa se il driver supporta le operazioni di connessione asincrone. Di conseguenza, Gestione driver restituisce sempre SQL_SUCCESS. Tuttavia, nel caso in cui il driver non supporti le operazioni di connessione asincrone, la chiamata a SQLBrowseConnect, SQLConnect o SQLDriverConnect avrà esito negativo.

[5] Quando SQL_ATTR_AUTOCOMMIT è impostato su FALSE, le applicazioni devono chiamare SQLEndTran(SQL_ROLLBACK) se un'API restituisce SQL_ERROR per garantire la coerenza transazionale.

Il formato delle informazioni impostate nel buffer * ValuePtr dipende dall'attributo specificato. SQLSetConnectAttr accetterà le informazioni sugli attributi in uno dei due formati diversi: una stringa di caratteri con terminazione Null o un valore integer. Il formato di ogni è specificato nella descrizione dell'attributo. Le stringhe di caratteri a cui punta l'argomento ValuePtr di SQLSetConnectAttr hanno una lunghezza di byte StringLength.

L'argomento StringLength viene ignorato se la lunghezza è definita dall'attributo , come nel caso di tutti gli attributi introdotti in ODBC 2 .x o versioni precedenti.

Attributo Contenuto di ValuePtr
SQL_ATTR_ACCESS_MODE (ODBC 1.0) Valore SQLUINTEGER. SQL_MODE_READ_ONLY viene usato dal driver o dall'origine dati come indicatore che la connessione non è necessaria per supportare istruzioni SQL che causano l'esecuzione degli aggiornamenti. Questa modalità può essere usata per ottimizzare le strategie di blocco, la gestione delle transazioni o altre aree in base alle esigenze del driver o dell'origine dati. Il driver non è necessario per impedire l'invio di tali istruzioni all'origine dati. Il comportamento del driver e dell'origine dati quando viene richiesto di elaborare istruzioni SQL che non sono di sola lettura durante una connessione di sola lettura è definito dall'implementazione. SQL_MODE_READ_WRITE è l'impostazione predefinita.
SQL_ATTR_ASYNC_DBC_EVENT (ODBC 3.8) Valore SQLPOINTER che è un handle di evento.

La notifica del completamento delle funzioni asincrone viene abilitata chiamando SQLSetConnectAttr con l'attributo SQL_ATTR_ASYNC_STMT_EVENT e specificando l'handle dell'evento. Nota: Il metodo di notifica non è supportato con la libreria di cursori. Un'applicazione riceverà un messaggio di errore se tenta di abilitare la libreria di cursori tramite SQLSetConnectAttr, quando il metodo di notifica è abilitato.
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE (ODBC 3.8) Valore SQLUINTEGER che abilita o disabilita l'esecuzione asincrona di funzioni selezionate nell'handle di connessione. Per altre informazioni, vedere Esecuzione asincrona (metodo di polling).

SQL_ASYNC_DBC_ENABLE_ON = Abilitare l'operazione asincrona per le funzioni correlate alla connessione specificate.

SQL_ASYNC_DBC_ENABLE_OFF = (impostazione predefinita) Disabilita l'operazione asincrona per le funzioni correlate alla connessione specificate.

L'SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE è sempre sincrona, ovvero non restituirà mai SQL_STILL_EXECUTING.

L'esecuzione asincrona delle operazioni di istruzione è abilitata con SQL_ATTR_ASYNC_ENABLE.
SQL_ATTR_ASYNC_DBC_PCALLBACK (ODBC 3.8) Valore SQLPOINTER che punta alla struttura del contesto.

Solo Gestione driver può chiamare la funzione SQLSetStmtAttr di un driver con questo attributo.
SQL_ATTR_ASYNC_DBC_PCONTEXT (ODBC 3.8) Valore SQLPOINTER che punta alla struttura del contesto.

Solo Gestione driver può chiamare la funzione SQLSetStmtAttr di un driver con questo attributo.
SQL_ATTR_ASYNC_ENABLE (ODBC 3.0) Valore SQLULEN che specifica se una funzione chiamata con un'istruzione sulla connessione specificata viene eseguita in modo asincrono:

SQL_ASYNC_ENABLE_OFF = Disabilita il supporto dell'esecuzione asincrona a livello di connessione per le operazioni di istruzione (impostazione predefinita).

SQL_ASYNC_ENABLE_ON = Abilitare il supporto dell'esecuzione asincrona a livello di connessione per le operazioni di istruzione.

Questo attributo può essere impostato se SQLGetInfo con il tipo di SQL_ASYNC_MODE restituisce SQL_AM_CONNECTION o SQL_AM_STATEMENT.
SQL_ATTR_AUTO_IPD (ODBC 3.0) Valore SQLUINTEGER di sola lettura che specifica se è supportato il popolamento automatico dell'IPD dopo una chiamata a SQLPrepare:

SQL_TRUE = Il popolamento automatico dell'IPD dopo una chiamata a SQLPrepare è supportato dal driver.

SQL_FALSE = Popolamento automatico dell'IPD dopo una chiamata a SQLPrepare non è supportato dal driver. I server che non supportano istruzioni preparate non saranno in grado di popolare automaticamente l'IPD.

Se SQL_TRUE restituito per l'attributo di connessione SQL_ATTR_AUTO_IPD, l'attributo dell'istruzione SQL_ATTR_ENABLE_AUTO_IPD può essere impostato per attivare o disattivare il popolamento automatico dell'IPD. Se SQL_ATTR_AUTO_IPD è SQL_FALSE, SQL_ATTR_ENABLE_AUTO_IPD non può essere impostato su SQL_TRUE. Il valore predefinito di SQL_ATTR_ENABLE_AUTO_IPD è uguale al valore di SQL_ATTR_AUTO_IPD.

Questo attributo di connessione può essere restituito da SQLGetConnectAttr, ma non può essere impostato da SQLSetConnectAttr.
SQL_ATTR_AUTOCOMMIT (ODBC 1.0) Valore SQLUINTEGER che specifica se usare la modalità di commit automatico o commit manuale:

SQL_AUTOCOMMIT_OFF = il driver usa la modalità di commit manuale e l'applicazione deve eseguire in modo esplicito il commit o il rollback delle transazioni con SQLEndTran.

SQL_AUTOCOMMIT_ON = il driver usa la modalità autocommit. Il commit di ogni istruzione viene eseguito immediatamente dopo l'esecuzione. Questo è il valore predefinito. Il commit di tutte le transazioni aperte nella connessione viene eseguito quando SQL_ATTR_AUTOCOMMIT è impostato su SQL_AUTOCOMMIT_ON per passare dalla modalità di commit manuale alla modalità di commit automatico.

Per altre informazioni, vedere Modalità commit. Importante: Alcune origini dati eliminano i piani di accesso e chiudono i cursori per tutte le istruzioni in una connessione ogni volta che viene eseguito il commit di un'istruzione. La modalità autocommit può causare questa operazione dopo l'esecuzione di ogni istruzione nonquery o quando il cursore viene chiuso per una query. Per altre informazioni, vedere i SQL_CURSOR_COMMIT_BEHAVIOR e SQL_CURSOR_ROLLBACK_BEHAVIOR in SQLGetInfo e Effetto delle transazioni sui cursori e sulle istruzioni preparate.

Quando un batch viene eseguito in modalità di autocommit, è possibile eseguire due operazioni. L'intero batch può essere considerato come un'unità autocommitable oppure ogni istruzione in un batch viene considerata come un'unità autocommitable. Alcune origini dati possono supportare entrambi questi comportamenti e possono fornire un modo per scegliere uno o l'altro. È definito dal driver se un batch viene considerato come un'unità autocommitable o se ogni singola istruzione all'interno del batch è autocommitable.
SQL_ATTR_CONNECTION_DEAD

(ODBC 3.5)
Valore SQLUINTEGER di sola lettura che indica lo stato della connessione. Se SQL_CD_TRUE, la connessione è stata persa. Se SQL_CD_FALSE, la connessione è ancora attiva.
SQL_ATTR_CONNECTION_TIMEOUT (ODBC 3.0) Valore SQLUINTEGER corrispondente al numero di secondi di attesa del completamento di qualsiasi richiesta nella connessione prima di tornare all'applicazione. Il driver deve restituire SQLSTATE HYT00 (Timeout scaduto) ogni volta che è possibile che si sia verificato un timeout in una situazione non associata all'esecuzione della query o all'accesso.

Se ValuePtr è uguale a 0 (impostazione predefinita), non è presente alcun timeout.
SQL_ATTR_CURRENT_CATALOG (ODBC 2.0) Stringa di caratteri contenente il nome del catalogo che deve essere utilizzato dall'origine dati. Ad esempio, in SQL Server il catalogo è un database, quindi il driver invia un'istruzione use database all'origine dati, dove database è il database specificato in * ValuePtr. Per un driver a livello singolo, il catalogo potrebbe essere una directory, quindi il driver modifica la directory corrente nella directory specificata in *ValuePtr.
SQL_ATTR_DBC_INFO_TOKEN (ODBC 3.8 Valore SQLPOINTER usato per impostare nuovamente il token di informazioni di connessione nell'handle DBC quando il parametro di SQLRateConnection( pRating ) non è uguale * a 100.

SQL_ATTR_DBC_INFO_TOKEN è di sola impostazione. Non è possibile usare SQLGetConnectAttr o SQLGetConnectOption per recuperare questo valore. SQLSetConnectAttr di Gestione driver non accetterà SQL_ATTR_DBC_INFO_TOKEN, perché un'applicazione non deve impostare questo attributo.

Se un driver restituisce SQL_ERROR dopo l'impostazione SQL_ATTR_DBC_INFO_TOKEN, la connessione appena ottenuta dal pool verrà liberata. Gestione driver tenterà quindi di ottenere un'altra connessione dal pool. Per altre informazioni, Connection-Pool sviluppo di informazioni sul riconoscimento dei dati in un driver ODBC.
SQL_ATTR_ENLIST_IN_DTC (ODBC 3.0) Valore SQLPOINTER che specifica se utilizzare il driver ODBC nelle transazioni distribuite coordinate da Servizi componenti Microsoft.

Passare un oggetto transazione OLE DTC che specifica la transazione da esportare SQL Server o SQL_DTC_DONE per terminare l'associazione DTC della connessione.

Il client chiama il metodo OLE ITransactionDispenser::BeginTransaction di Microsoft Distributed Transaction Coordinator (MS DTC) per iniziare una transazione MS DTC e creare un oggetto transazione MS DTC che rappresenta la transazione. L'applicazione chiama quindi SQLSetConnectAttr con l SQL_ATTR_ENLIST_IN_DTC per associare l'oggetto transazione alla connessione ODBC. Tutte le attività del database correlate verranno eseguite sotto la protezione della transazione MS DTC. L'applicazione chiama SQLSetConnectAttr con SQL_DTC_DONE per terminare l'associazione DTC della connessione. Per ulteriori informazioni, vedere la documentazione di MS DTC.
SQL_ATTR_LOGIN_TIMEOUT (ODBC 1.0) Valore SQLUINTEGER corrispondente al numero di secondi di attesa del completamento di una richiesta di accesso prima di tornare all'applicazione. Il valore predefinito è dipendente dal driver. Se ValuePtr è 0, il timeout è disabilitato e un tentativo di connessione attenderà per un periodo illimitato.

Se il timeout specificato supera il timeout di accesso massimo nell'origine dati, il driver sostituisce tale valore e restituisce SQLSTATE 01S02 (valore opzione modificato).
SQL_ATTR_METADATA_ID (ODBC 3.0) Valore SQLUINTEGER che determina la modalità di gestione degli argomenti stringa delle funzioni di catalogo.

Se SQL_TRUE, l'argomento stringa delle funzioni di catalogo viene considerato come identificatori. Il caso non è significativo. Per le stringhe non delimitate, il driver rimuove tutti gli spazi finali e la stringa viene ritrosa in maiuscolo. Per le stringhe delimitate, il driver rimuove tutti gli spazi iniziali o finali e accetta letteralmente qualsiasi elemento tra i delimitatori. Se uno di questi argomenti è impostato su un puntatore Null, la funzione restituisce SQL_ERROR e SQLSTATE HY009 (uso non valido del puntatore Null).

Se SQL_FALSE, gli argomenti stringa delle funzioni di catalogo non vengono considerati identificatori. Il caso è significativo. Possono contenere o meno un criterio di ricerca stringa, a seconda dell'argomento .

Il valore predefinito è SQL_FALSE.

L'argomento TableType di SQLTables, che accetta un elenco di valori, non è interessato da questo attributo.

SQL_ATTR_METADATA_ID può essere impostato anche a livello di istruzione. È l'unico attributo di connessione che è anche un attributo di istruzione.

Per altre informazioni, vedere Argomenti nelle funzioni di catalogo.
SQL_ATTR_ODBC_CURSORS (ODBC 2.0) Valore SQLULEN che specifica il modo in cui Gestione driver usa la libreria di cursori ODBC:

SQL_CUR_USE_IF_NEEDED = Gestione driver usa la libreria di cursori ODBC solo se necessario. Se il driver supporta l'SQL_FETCH_PRIOR in SQLFetchScroll, Gestione driver usa le funzionalità di scorrimento del driver. In caso contrario, viene utilizzata la libreria di cursori ODBC.

SQL_CUR_USE_ODBC = Gestione driver usa la libreria di cursori ODBC.

SQL_CUR_USE_DRIVER = Gestione driver usa le funzionalità di scorrimento del driver. Si tratta dell'impostazione predefinita.

Per altre informazioni sulla libreria di cursori ODBC, vedere Appendice F: Libreria di cursori ODBC. Avviso: La libreria di cursori verrà rimossa in una versione futura di Windows. Evitare di usare questa funzionalità nelle nuove attività di sviluppo e pianificare la modifica delle applicazioni che attualmente usano questa funzionalità. Microsoft consiglia di usare la funzionalità del cursore del driver.
SQL_ATTR_PACKET_SIZE (ODBC 2.0) Valore SQLUINTEGER che specifica le dimensioni del pacchetto di rete in byte. Nota: Molte origini dati non supportano questa opzione o solo possono restituire ma non impostare le dimensioni del pacchetto di rete.

Se la dimensione specificata supera la dimensione massima del pacchetto o è inferiore alla dimensione minima del pacchetto, il driver sostituisce tale valore e restituisce SQLSTATE 01S02 (valore opzione modificato).

Se l'applicazione imposta le dimensioni del pacchetto dopo che è già stata stabilita una connessione, il driver restituirà SQLSTATE HY011 (l'attributo non può essere impostato ora).
SQL_ATTR_QUIET_MODE (ODBC 2.0) Handle di finestra (HWND).

Se l'handle di finestra è un puntatore Null, il driver non visualizza alcuna finestra di dialogo.

Se l'handle di finestra non è un puntatore Null, deve essere l'handle della finestra padre dell'applicazione. Questo è il valore predefinito. Il driver utilizza questo handle per visualizzare le finestre di dialogo. Nota: L SQL_ATTR_QUIET_MODE di connessione non si applica alle finestre di dialogo visualizzate da SQLDriverConnect.
SQL_ATTR_TRACE (ODBC 1.0) Valore SQLUINTEGER che indica a Gestione driver se eseguire la traccia:

SQL_OPT_TRACE_OFF = Traccia disattivata (impostazione predefinita)

SQL_OPT_TRACE_ON = Traccia in

Quando la traccia è attivata, Gestione driver scrive ogni chiamata di funzione ODBC nel file di traccia. Nota: Quando la traccia è attivata, Gestione driver può restituire SQLSTATE IM013 (errore del file di traccia) da qualsiasi funzione.

Un'applicazione specifica un file di traccia con l SQL_ATTR_TRACEFILE predefinita. Se il file esiste già, Gestione driver aggiunge al file. In caso contrario, crea il file . Se la traccia è attivata e non è stato specificato alcun file di traccia, Gestione driver scrive nel file SQL. ACCEDERE alla directory radice.

Un'applicazione può impostare la variabile ODBCSharedTraceFlag per abilitare la traccia in modo dinamico. La traccia viene quindi abilitata per tutte le applicazioni ODBC attualmente in esecuzione. Se un'applicazione disattiva la tracciatura, viene disattivata solo per tale applicazione.

Se la parola chiave Trace nelle informazioni di sistema è impostata su 1 quando un'applicazione chiama SQLAllocHandle con HandleType SQL_HANDLE_ENV, la traccia viene abilitata per tutti gli handle. È abilitato solo per l'applicazione che ha chiamato SQLAllocHandle.

La chiamata di SQLSetConnectAttr con un attributo SQL_ATTR_TRACE non richiede che l'argomento ConnectionHandle sia valido e non restituirà SQL_ERROR se ConnectionHandle è NULL. Questo attributo si applica a tutte le connessioni.
SQL_ATTR_TRACEFILE (ODBC 1.0) Stringa di caratteri con terminazione Null contenente il nome del file di traccia.

Il valore predefinito dell'attributo SQL_ATTR_TRACEFILE viene specificato con la parola chiave TraceFile nelle informazioni di sistema. Per altre informazioni, vedere Sottochiave ODBC.

La chiamata di SQLSetConnectAttr con un attributo SQL_ATTR_TRACEFILE non richiede che l'argomento ConnectionHandle sia valido e non restituirà SQL_ERROR se ConnectionHandle non è valido. Questo attributo si applica a tutte le connessioni.
SQL_ATTR_TRANSLATE_LIB (ODBC 1.0) Stringa di caratteri con terminazione Null contenente il nome di una libreria contenente le funzioni SQLDriverToDataSource e SQLDataSourceToDriver a cui accede il driver per eseguire attività come la conversione dei set di caratteri. Questa opzione può essere specificata solo se il driver si è connesso all'origine dati. L'impostazione di questo attributo verrà mantenuta tra le connessioni. Per altre informazioni sulla conversione dei dati, vedere Translation DLLs (DLL di conversione) e Translation DLL Function Reference (Informazioni di riferimento sulle funzioni dll di conversione).
SQL_ATTR_TRANSLATE_OPTION (ODBC 1.0) Valore del flag a 32 bit passato alla DLL di conversione. Questo attributo può essere specificato solo se il driver è connesso all'origine dati. Per informazioni sulla conversione dei dati, vedere DLL di conversione.
SQL_ATTR_TXN_ISOLATION (ODBC 1.0) Maschera di bit a 32 bit che imposta il livello di isolamento della transazione per la connessione corrente. Un'applicazione deve chiamare SQLEndTran per eseguire il commit o il rollback di tutte le transazioni aperte in una connessione, prima di chiamare SQLSetConnectAttr con questa opzione.

I valori validi per ValuePtr possono essere determinati chiamando SQLGetInfo con InfoType uguale a SQL_TXN_ISOLATION_OPTIONS.

Per una descrizione dei livelli di isolamento delle transazioni, vedere la descrizione del tipo SQL_DEFAULT_TXN_ISOLATION informazioni in SQLGetInfo e Livelli di isolamento delle transazioni.

[1] Queste funzioni possono essere chiamate in modo asincrono solo se il descrittore è un descrittore di implementazione, non un descrittore dell'applicazione.

Esempio di codice

Vedere SQLConnect.

Per informazioni su Vedere
Allocazione di un handle Funzione SQLAllocHandle
Restituzione dell'impostazione di un attributo di connessione Funzione SQLSetConnectAttr

Vedere anche

Informazioni di riferimento sulle API ODBC
File di intestazione ODBC