Pagina relativa alla funzione SQLSetConnectAttr

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

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

Nota

Per altre informazioni sul mapping di questa funzione a quando un'applicazione ODBC 3*.x* utilizza un driver ODBC 2*.x*, vedere Mapping di funzioni di sostituzione per compatibilità con le versioni precedenti delle applicazioni.

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 a Attribute. A seconda del valore di Attribute, ValuePtr sarà un valore intero senza segno o punterà a una stringa di caratteri con terminazione Null. Si noti che il tipo integrale dell'argomento Attribute potrebbe non essere a lunghezza fissa, vedere la sezione Commenti per informazioni dettagliate.

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 stringa di caratteri, questo argomento deve contenere il numero di byte nella stringa.

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

Se Attribute è un attributo definito dal driver, l'applicazione indica la natura dell'attributo a 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. In questo modo viene impostato 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.

Resi

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 handleTypedi SQL_HANDLE_DBC e handle di ConnectionHandle. La tabella seguente elenca i valori SQLSTATE comunemente restituiti da SQLSetConnectAttr e spiega ognuno di essi nel contesto di questa funzione. La notazione "(DM)" precede le descrizioni di SQLSTATEs restituite da Gestione driver. Il codice restituito associato a ogni valore SQLSTATE è SQL_ERROR, a meno che non sia 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 ha sostituito un valore simile. (La funzione restituisce SQL_SUCCESS_WITH_INFO.
08002 Nome connessione in uso L'argomento Attribute era SQL_ATTR_ODBC_CURSORS e il driver era già connesso all'origine dati.
08003 Connessione non aperta (DM) È stato specificato un valore di attributo che richiedeva una connessione aperta, ma ConnectionHandle non era in uno stato connesso.
08S01 Errore del collegamento di comunicazione 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 è stato SQL_ATTR_CURRENT_CATALOG e un set di risultati era in sospeso.
25000 Operazione non valida in una transazione locale Una connessione si trovava 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à inclusa in un DTC.

Una connessione è stata inserita in una connessione di transazione distribuita ed è stata avviata una transazione locale impostando SQL_ATTR_AUTOCOMMIT su SQL_AUTOCOMMIT_OFF.
3D000 Nome catalogo non valido L'argomento Attribute è stato SQL_CURRENT_CATALOG e il nome del catalogo specificato non è valido.
HY000 Errore generale: Si è verificato un errore per il quale non è stato specificato SQLSTATE e per il quale non è stato definito alcun 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 memoria necessaria per supportare l'esecuzione o il completamento della funzione.
HY008 Operazione annullata L'elaborazione asincrona è stata abilitata per ConnectionHandle. La funzione SQLSetConnectAttr è stata chiamata e, prima del completamento dell'esecuzione, la funzione SQLCancelHandle è stata chiamata sulla funzione ConnectionHandle e quindi la funzione SQLSetConnectAttr è stata chiamata nuovamente in ConnectionHandle.

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

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

(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 è stato chiamato per un statementHandle associato a ConnectionHandle e restituito 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 ConnectionHandlee restituito SQL_NEED_DATA. Questa funzione è stata chiamata prima che SQLBrowseConnect restituisca SQL_SUCCESS_WITH_INFO o SQL_SUCCESS.
HY011 Impossibile impostare l'attributo ora L'argomento Attribute è stato SQL_ATTR_TXN_ISOLATION e una transazione è stata aperta.
HY013 Errore di gestione della memoria Impossibile 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 dell'attributo non valido Dato il valore attribute specificato, è stato specificato un valore non valido in ValuePtr. Gestione driver restituisce questo 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 era SQL_ATTR_TRACEFILE o SQL_ATTR_TRANSLATE_LIB e ValuePtr era 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 è stato 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 è un attributo di sola lettura.
HY114 Il driver non supporta l'esecuzione asincrona a livello di connessione (DM) Un'applicazione ha tentato di abilitare l'esecuzione asincrona di funzioni con SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE per un driver che non supporta operazioni di connessione asincrone.
HY117 La connessione viene sospesa a causa dello stato sconosciuto della transazione. Sono consentite solo funzioni disconnesse e di sola lettura. (DM) Per altre informazioni sullo stato sospeso, vedere Funzione SQLEndTran.
HY121 Impossibile abilitare la libreria di cursori e il pool con riconoscimento del driver contemporaneamente Per altre informazioni, vedere Pool di connessioni compatibile con 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 Il timeout della connessione è scaduto Periodo di timeout della connessione scaduto prima che l'origine dati rispondesse 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 traduzione Il driver non è riuscito a caricare la DLL di traduzione specificata per la connessione. Questo errore può essere restituito solo quando Attribute è 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 vengono visualizzati 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 sia attributi di connessione che attributi di istruzione e possono essere impostati a livello di connessione o a livello 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 del driver per la compatibilità con le versioni precedenti.

Un'applicazione può chiamare SQLSetConnectAttr in qualsiasi momento tra l'allocazione e la liberazione della connessione. 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 persiste 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 persiste anche se l'applicazione si connette a un driver diverso nella connessione.

Alcuni attributi di connessione possono essere impostati solo prima che venga 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 Entrambi[1]
SQL_ATTR_ASYNC_DBC_EVENT Prima o dopo
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE Entrambi[4]
SQL_ATTR_ASYNC_DBC_PCALLBACK Prima o dopo
SQL_ATTR_ASYNC_DBC_PCONTEXT Prima o dopo
SQL_ATTR_ASYNC_ENABLE Entrambi[2]
SQL_ATTR_AUTO_IPD Prima o dopo
SQL_ATTR_AUTOCOMMIT Entrambi[5]
SQL_ATTR_CONNECTION_DEAD Dopo
SQL_ATTR_CONNECTION_TIMEOUT Prima o dopo
SQL_ATTR_CURRENT_CATALOG Entrambi[1]
SQL_ATTR_DBC_INFO_TOKEN Dopo
SQL_ATTR_ENLIST_IN_DTC Dopo
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 Dopo
SQL_ATTR_TRANSLATE_OPTION Dopo
SQL_ATTR_TXN_ISOLATION Entrambi[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 interoperabili le impostano prima della connessione perché alcuni driver non supportano la modifica di questi elementi dopo la connessione.

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

[3] SQL_ATTR_TXN_ISOLATION può essere impostato 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 viene 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 operazioni di connessione asincrone. Pertanto, Gestione driver restituisce sempre SQL_SUCCESS. Tuttavia, nel caso in cui il driver non supporti 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à informazioni sull'attributo in uno dei due formati diversi: una stringa di caratteri con terminazione Null o un valore intero. Il formato di ogni attributo è indicato 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 avviee per 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 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 che tali istruzioni vengano inviate 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 è definita dall'implementazione. SQL_MODE_READ_WRITE è l'impostazione predefinita.
SQL_ATTR_ASYNC_DBC_EVENT (ODBC 3.8) Valore DI SQLPOINTER che è un handle di eventi.

La notifica del completamento delle funzioni asincrone è abilitata chiamando SQLSetConnectAttr con l'attributo SQL_ATTR_ASYNC_STMT_EVENT e specificando l'handle eventi. 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 delle 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) Disabilitare l'operazione asincrona per le funzioni correlate alla connessione specificate.

L'impostazione di 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 DI 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 nella connessione specificata viene eseguita in modo asincrono:

SQL_ASYNC_ENABLE_OFF = Disabilitare 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 informazioni 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 = 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 viene 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, non è possibile impostare SQL_ATTR_ENABLE_AUTO_IPD 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à autocommit o manual-commit:

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. Ogni istruzione viene sottoposta a commit immediatamente dopo l'esecuzione. Si tratta dell'impostazione predefinita. Tutte le transazioni aperte nella connessione vengono sottoposte a commit quando SQL_ATTR_AUTOCOMMIT è impostata su SQL_AUTOCOMMIT_ON per passare dalla modalità di commit manuale alla modalità autocommit.

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 l'esecuzione di ogni istruzione nonquery o quando il cursore viene chiuso per una query. Per altre informazioni, vedere i tipi di informazioni SQL_CURSOR_COMMIT_BEHAVIOR e SQL_CURSOR_ROLLBACK_BEHAVIOR in SQLGetInfo ed effetto delle transazioni sui cursori e istruzioni preparate.

Quando un batch viene eseguito in modalità autocommit, è possibile eseguire due operazioni. L'intero batch può essere considerato come un'unità comcommibile automatica oppure ogni istruzione in un batch viene considerata come un'unità comcommibile automatica. Alcune origini dati possono supportare entrambi questi comportamenti e possono fornire un modo per scegliere uno o l'altro. Viene definito dal driver se un batch viene considerato come un'unità comcommibile automatica 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 per il completamento di qualsiasi richiesta nella connessione prima di tornare all'applicazione. Il driver deve restituire SQLSTATE HYT00 (timeout scaduto) ogni volta che è possibile timeout in una situazione non associata all'esecuzione di query o all'account di accesso.

Se ValuePtr è uguale a 0 (impostazione predefinita), non esiste alcun timeout.
SQL_ATTR_CURRENT_CATALOG (ODBC 2.0) Stringa di caratteri contenente il nome del catalogo da utilizzare dall'origine dati. Ad esempio, in SQL Server il catalogo è un database, quindi il driver invia un'istruzione USEdatabase all'origine dati, dove il 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 ripristinare il token delle informazioni di connessione nell'handle DBC quando il parametro (*pRating) di SQLRateConnection non è uguale a 100.

SQL_ATTR_DBC_INFO_TOKEN è impostato solo. 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, vedere Sviluppo di consapevolezza del pool di connessioni 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 Microsoft Component Services.

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

Il client chiama il metodo MICROSOFT Distributed Transaction Coordinator (MS DTC) OLE ITransactionDispenser::BeginTransaction per avviare una transazione MS DTC e creare un oggetto transazione MS DTC che rappresenta la transazione. L'applicazione chiama quindi SQLSetConnectAttr con l'opzione 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à un tempo illimitato.

Se il timeout specificato supera il timeout massimo di accesso 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 trattamento degli argomenti stringa delle funzioni del catalogo.

Se SQL_TRUE, l'argomento stringa delle funzioni del catalogo viene considerato come identificatori. Il caso non è significativo. Per le stringhe non eliminate, il driver rimuove tutti gli spazi finali e la stringa viene piegata in lettere maiuscole. 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 come identificatori. Il caso è significativo. Possono contenere o meno un criterio di ricerca di stringhe, 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 in Funzioni del 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'opzione SQL_FETCH_PRIOR in SQLFetchScroll, Gestione driver usa le funzionalità di scorrimento del driver. In caso contrario, usa 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à nel nuovo lavoro di sviluppo e pianificare la modifica delle applicazioni che attualmente usano questa funzionalità. Microsoft consiglia di usare la funzionalità 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 possono restituire solo ma non impostare le dimensioni del pacchetto di rete.

Se la dimensione specificata supera le dimensioni massime 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 dei pacchetti 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 finestre di dialogo.

Se l'handle di finestra non è un puntatore Null, deve essere l'handle della finestra padre dell'applicazione. Si tratta dell'impostazione predefinita. Il driver usa questo handle per visualizzare le finestre di dialogo. Nota: l'attributo di connessione SQL_ATTR_QUIET_MODE 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 su

Quando la traccia è attivata, Gestione driver scrive ogni chiamata di funzione ODBC al 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'opzione SQL_ATTR_TRACEFILE. 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 traccia, viene disattivata solo per l'applicazione.

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

La chiamata a SQLSetConnectAttr con un attributo di SQL_ATTR_TRACE non richiede che l'argomento ConnectionHandle sia valido e non restituisca 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 a SQLSetConnectAttr con un attributo di SQL_ATTR_TRACEFILE non richiede che l'argomento ConnectionHandle sia valido e non restituisca 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 il driver accede per eseguire attività come la conversione dei set di caratteri. Questa opzione può essere specificata solo se il driver è connesso all'origine dati. L'impostazione di questo attributo verrà mantenuta tra le connessioni. Per altre informazioni sulla conversione dei dati, vedere Dll di traduzione e Informazioni di riferimento sulle funzioni DLL di traduzione.
SQL_ATTR_TRANSLATE_OPTION (ODBC 1.0) Valore 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 traduzione dei dati, vedere DLL di traduzione.
SQL_ATTR_TXN_ISOLATION (ODBC 1.0) Maschera 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 di informazioni SQL_DEFAULT_TXN_ISOLATION 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 SQLGetConnectAttr

Vedi anche

Riferimento API ODBC
File di intestazione ODBC