Condividi tramite


SQLSetStmtAttr

Il driver ODBC di SQL Server Native Client non supporta il modello di cursore misto (keyset/dinamico). Se il set di valori non è uguale a 0, i tentativi di impostare le dimensioni del keyset usando SQL_ATTR_KEYSET_SIZE avranno esito negativo.

L'applicazione imposta SQL_ATTR_ROW_ARRAY_SIZE su tutte le istruzioni per dichiarare il numero di righe restituite in una chiamata di funzione SQLFetch o SQLFetchScroll. Nelle istruzioni che indicano un cursore del server, il driver utilizza SQL_ATTR_ROW_ARRAY_SIZE per determinare le dimensioni del blocco di righe generato dal server per soddisfare una richiesta di recupero dal cursore. All'interno delle dimensioni del blocco di un cursore dinamico, l'appartenenza alle righe e l'ordinamento vengono corretti se il livello di isolamento delle transazioni è sufficiente per garantire letture ripetibili delle transazioni di cui è stato eseguito il commit. Il cursore è completamente dinamico all'esterno del blocco indicato da questo valore. Le dimensioni del blocco del cursore del server sono completamente dinamiche e possono essere modificate in qualsiasi momento durante l'elaborazione del recupero.

Parametri SQLSetStmtAttr e Table-Valued

SQLSetStmtAttr può essere usato per impostare SQL_SOPT_SS_PARAM_FOCUS nel descrittore di parametri dell'applicazione (APD) prima di accedere ai campi del descrittore per le colonne dei parametri con valori di tabella.

Se si tenta di impostare SQL_SOPT_SS_PARAM_FOCUS sull'ordinale di un parametro che non è un parametro con valori di tabella, SQLSetStmtAttr restituisce SQL_ERROR e viene creato un record di diagnostica con SQLSTATE = HY024 e il messaggio "Valore attributo non valido". SQL_SOPT_SS_PARAM_FOCUS non viene modificato quando viene restituito SQL_ERROR.

L'impostazione di SQL_SOPT_SS_PARAM_FOCUS su 0 ripristina l'accesso ai record del descrittore per i parametri.

È anche possibile usare SQLSetStmtAttr per impostare SQL_SOPT_SS_NAME_SCOPE. Per altre informazioni, vedere la sezione SQL_SOPT_SS_NAME_SCOPE più avanti in questo argomento.

Per altre informazioni, vedere Table-Valued metadati dei parametri per istruzioni preparate.

Per altre informazioni sui parametri con valori di tabella, vedere Parametri con valori di tabella (ODBC).

Supporto di SQLSetStmtAttr per le colonne di tipo sparse

SQLSetStmtAttr può essere usato per impostare SQL_SOPT_SS_NAME_SCOPE. Per altre informazioni, vedere la sezione SQL_SOPT_SS_NAME_SCOPE più avanti in questo argomento. Per altre informazioni sulle colonne di tipo sparse, vedere Supporto colonne di tipo sparse (ODBC).

Attributi dichiarazione

Il driver ODBC di SQL Server Native Client supporta anche gli attributi di istruzione specifici del driver seguenti.

SQL_SOPT_SS_CURSOR_OPTIONS

L'attributo SQL_SOPT_SS_CURSOR specifica se il driver userà opzioni di prestazioni specifiche del driver nei cursori. SQLGetData non è consentito quando queste opzioni sono impostate. L'impostazione predefinita è SQL_CO_OFF. Il valore ValuePtr è di tipo SQLLEN.

ValuePtr value Descrizione
SQL_CO_OFF Predefinito Disabilita i cursori forward-only rapidi, di sola lettura e il caricamento automatico, abilita SQLGetData in cursori forward-only di sola lettura. Quando SQL_SOPT_SS_CURSOR_OPTIONS è impostato su SQL_CO_OFF, il tipo di cursore non verrà modificato. Ovvero, il cursore forward-only rapido rimarrà un cursore forward-only veloce. Per modificare il tipo di cursore, l'applicazione deve ora impostare un tipo di cursore diverso usando SQLSetStmtAttr/SQL_ATTR_CURSOR_TYPE.
SQL_CO_FFO Abilita cursori forward-only rapidi, di sola lettura, disabilita SQLGetData in cursori forward-only di sola lettura.
SQL_CO_AF Abilita l'opzione di caricamento automatico in qualsiasi tipo di cursore. Quando questa opzione è impostata per un handle di istruzione, SQLExecute o SQLExecDirect genererà un SQLFetchScroll implicito (SQL_FIRST). Il cursore viene aperto e il primo batch di righe viene restituito in un singolo round trip al server.
SQL_CO_FFO_AF Abilita cursori forward-only rapidi con l'opzione di recupero automatico. È uguale a se vengono specificati sia SQL_CO_AF che SQL_CO_FFO.

Quando queste opzioni sono impostate, il server chiude automaticamente il cursore quando rileva che l'ultima riga è stata recuperata. L'applicazione deve comunque chiamare SQLFreeStmt (SQL_CLOSE) o SQLCloseCursor, ma il driver non deve inviare la notifica di chiusura al server.

Se l'elenco di selezione contiene una colonna text, ntext o image , il cursore forward-only rapido viene convertito in un cursore dinamico e SQLGetData è consentito.

SQL_SOPT_SS_DEFER_PREPARE

L'attributo SQL_SOPT_SS_DEFER_PREPARE determina se l'istruzione viene preparata immediatamente o posticipata fino all'esecuzione di SQLExecute, SQLDescribeCol o SQLDescribeParam. In SQL Server 7.0 e versioni precedenti questa proprietà viene ignorata (nessuna preparazione posticipata). Il valore ValuePtr è di tipo SQLLEN.

ValuePtr value Descrizione
SQL_DP_ON Predefinito Dopo aver chiamato la funzione SQLPrepare, la preparazione dell'istruzione viene posticipata finché non viene chiamata o metaproperty operation (SQLDescribeCol o SQLDescribeParam) viene eseguita.
SQL_DP_OFF L'istruzione viene preparata non appena viene eseguito SQLPrepare .

SQL_SOPT_SS_REGIONALIZE

L'attributo SQL_SOPT_SS_REGIONALIZE viene usato per determinare la conversione dei dati a livello di istruzione. L'attributo fa in modo che il driver rispetti l'impostazione delle impostazioni locali del client durante la conversione di valori di data, ora e valuta in stringhe di caratteri. La conversione viene eseguita solo dai tipi di dati nativi di SQL Server alle stringhe di caratteri.

Il valore ValuePtr è di tipo SQLLEN.

ValuePtr value Descrizione
SQL_RE_OFF Predefinito Il driver non converte i dati di data, ora e valuta in dati stringa di tipo carattere usando l'impostazione delle impostazioni locali del client.
SQL_RE_ON Il driver usa l'impostazione delle impostazioni locali del client durante la conversione di dati di data, ora e valuta in dati stringa di tipo carattere.

Ai dati di tipo valuta, numerico, data e ora vengono applicate le impostazioni di conversione internazionali. L'impostazione di conversione è applicabile solo alle conversioni di output quando i valori di valuta, numerica, data o ora vengono convertiti in stringhe di caratteri.

Annotazioni

Quando l'opzione di istruzione SQL_SOPT_SS_REGIONALIZE è attivata, il driver usa le impostazioni del Registro di sistema delle impostazioni locali per l'utente corrente. Il driver non rispetta le impostazioni locali del thread corrente se l'applicazione la imposta, ad esempio chiamando SetThreadLocale.

La modifica del comportamento internazionale di un'origine dati può generare un errore nell'applicazione. Un'applicazione che analizza le stringhe di data e prevede che le stringhe di data vengano visualizzate come definite da ODBC, potrebbero essere influenzate negativamente dalla modifica di questo valore.

SQL_SOPT_SS_TEXTPTR_LOGGING

L'attributo SQL_SOPT_SS_TEXTPTR_LOGGING attiva/disattiva la registrazione delle operazioni sulle colonne contenenti dati di testo o immagine . Il valore ValuePtr è di tipo SQLLEN.

ValuePtr value Descrizione
SQL_TL_OFF Disabilita la registrazione delle operazioni eseguite sui dati di testo e immagine .
SQL_TL_ON Predefinito Abilita la registrazione delle operazioni eseguite sui dati di testo e immagine .

SQL_SOPT_SS_HIDDEN_COLUMNS

L'attributo SQL_SOPT_SS_HIDDEN_COLUMNS espone, nel set di risultati, colonne nascoste in un'istruzione SELECT FOR BROWSE di SQL Server. Il driver non espone queste colonne per impostazione predefinita. Il valore ValuePtr è di tipo SQLLEN.

ValuePtr value Descrizione
SQL_HC_OFF Predefinito Le colonne FOR BROWSE sono nascoste dal set di risultati.
SQL_HC_ON Espone le colonne FOR BROWSE.

SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT

L'attributo SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT restituisce il testo del messaggio per la richiesta di notifica della query.

SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS

L'attributo SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS specifica le opzioni usate per la richiesta di notifica delle query. Questi valori vengono specificati in una stringa con name=value sintassi come specificato di seguito. L'applicazione è responsabile della creazione del servizio e della lettura delle notifiche all'esterno della coda.

La sintassi delle opzioni delle notifiche delle query è la seguente:

service=<service-name>[;(local database=<database>|broker instance=<broker instance>)]

Per esempio:

service=mySSBService;local database=mydb

SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT

L'attributo SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT specifica il numero di secondi in cui la notifica della query deve rimanere attiva. Il valore predefinito è 432000 secondi (5 giorni). Il valore ValuePtr è di tipo SQLLEN.

SQL_SOPT_SS_PARAM_FOCUS

L'attributo SQL_SOPT_SS_PARAM_FOCUS specifica lo stato attivo per le successive chiamate SQLBindParameter, SQLGetDescField, SQLSetDescField, SQLGetDescRec e SQLSetDescRec.

Il tipo per SQL_SOPT_SS_PARAM_FOCUS è SQLULEN.

Il valore predefinito è 0, ovvero queste chiamate parametri di indirizzo che corrispondono ai marcatori di parametro nell'istruzione SQL. Se impostato sul numero di parametro di un parametro con valori di tabella, queste chiamano colonne di indirizzo del parametro con valori di tabella. Se impostato su un valore diverso dal numero di parametro di un parametro con valori di tabella, queste chiamate restituiscono l'errore IM020: "Lo stato attivo del parametro non fa riferimento a un parametro con valori di tabella".

SQL_SOPT_SS_NAME_SCOPE

L'attributo SQL_SOPT_SS_NAME_SCOPE specifica l'ambito del nome per le successive chiamate di funzione del catalogo. Il set di risultati restituito da SQLColumns dipende dall'impostazione di SQL_SOPT_SS_NAME_SCOPE.

Il tipo per SQL_SOPT_SS_NAME_SCOPE è SQLULEN.

ValuePtr value Descrizione
SQL_SS_NAME_SCOPE_TABLE Predefinito

Quando si usano parametri con valori di tabella, indica che devono essere restituiti i metadati per le tabelle effettive.

Quando si usa la funzionalità colonne di tipo sparse, SQLColumns restituirà solo colonne che non sono membri dell'oggetto sparse column_set.
SQL_SS_NAME_SCOPE_TABLE_TYPE Indica che l'applicazione richiede metadati per un tipo di tabella, anziché una tabella effettiva (le funzioni del catalogo devono restituire metadati per i tipi di tabella). L'applicazione passa quindi il TYPE_NAME del parametro con valori di tabella come parametro TableName .
SQL_SS_NAME_SCOPE_EXTENDED Quando si usa la funzionalità colonne di tipo sparse, SQLColumns restituisce tutte le colonne, indipendentemente dall'appartenenza column_set .
SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET Quando si usa la funzionalità colonne di tipo sparse, SQLColumns restituisce solo le colonne che sono membri dell'oggetto sparse column_set.
SQL_SS_NAME_SCOPE_DEFAULT Uguale a SQL_SS_NAME_SCOPE_TABLE.

SS_TYPE_CATALOG_NAME e SS_TYPE_SCHEMA_NAME vengono usati rispettivamente con i parametri CatalogName e SchemaName per identificare il catalogo e lo schema per il parametro con valori di tabella. Quando un'applicazione ha completato il recupero dei metadati per i parametri con valori di tabella, deve impostare nuovamente SQL_SOPT_SS_NAME_SCOPE sul valore predefinito di SQL_SS_NAME_SCOPE_TABLE.

Quando SQL_SOPT_SS_NAME_SCOPE è impostato su SQL_SS_NAME_SCOPE_TABLE, le query ai server collegati non riescono. Le chiamate a SQLColumns o SQLPrimaryKeys con un catalogo che contiene un componente server avranno esito negativo.

Se si tenta di impostare SQL_SOPT_SS_NAME_SCOPE su un valore non valido, SQL_ERROR viene restituito e viene generato un record di diagnostica con SQLSTATE HY024 e il messaggio "Valore attributo non valido".

Se viene chiamata una funzione di catalogo diversa da SQLTables, SQLColumns o SQLPrimaryKeys quando SQL_SOPT_SS_NAME_SCOPE ha un valore diverso da SQL_SS_NAME_SCOPE_TABLE, viene restituito SQL_ERROR. Viene generato un record di diagnostica con SQLSTATE HY010 e il messaggio "Errore della sequenza di funzioni (SQL_SOPT_SS_NAME_SCOPE non è impostato su SQL_SS_NAME_SCOPE_TABLE)".

Vedere anche

Funzione SQLGetStmtAttr
Dettagli di implementazione dell'API ODBC