Condividi tramite


Libreria di cursori ODBC

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)

Alcuni driver ODBC supportano solo le impostazioni predefinite del cursore; questi driver non supportano anche operazioni di cursore posizionate, ad esempio SQLSetPos. La libreria di cursori ODBC è un componente di Microsoft Data Access Components (MDAC) utilizzato per implementare cursori a blocchi o statici in un driver che generalmente non li supporta. La libreria di cursori implementa anche istruzioni UPDATE e DELETE posizionate e SQLSetPos per i cursori creati.

La libreria di cursori ODBC viene implementata come livello tra Gestione driver ODBC e il driver ODBC. Se la libreria viene caricata, a questa, e non al driver, vengono indirizzati tutti i comandi correlati al cursore. La libreria di cursori implementa un cursore mediante il recupero dell'intero set di risultati dal driver sottostante e la memorizzazione nella cache del client del set di risultati. Quando si utilizza la libreria di cursori ODBC, nell'applicazione sono disponibili solo le funzionalità di cursore della libreria di cursori e non funzionalità di cursore aggiuntive del driver sottostante.

Non è necessario usare la libreria di cursori ODBC con il driver ODBC di SQL Server Native Client perché il driver stesso supporta più funzionalità del cursore rispetto alla libreria di cursori ODBC. L'unico motivo per usare la libreria di cursori ODBC con il driver ODBC di SQL Server Native Client è dovuto al fatto che il driver implementa il supporto del cursore tramite cursori server e i cursori del server non supportano tutte le istruzioni SQL. È pertanto consigliabile utilizzare la libreria di cursori ODBC ogni volta che si richiede un cursore statico con stored procedure, batch o istruzioni SQL contenenti COMPUTE, COMPUTE BY, FOR BROWSE o INTO. È tuttavia necessario prestare attenzione nell'utilizzo della libreria in quanto memorizza nella cache del client l'intero set di risultati con conseguente impiego di grandi quantità di memoria e rallentamento delle prestazioni.

Un'applicazione richiama la libreria di cursori in base alla connessione tramite SQLSetConnectAttr per impostare l'attributo di connessione SQL_ATTR_ODBC_CURSORS prima di connettersi a un'origine dati. L'attributo SQL_ATTR_ODBC_CURSORS può essere impostato su uno di tre valori seguenti:

SQL_CUR_USE_ODBC
Quando questa opzione è impostata con il driver ODBC di SQL Server Native Client, la libreria di cursori ODBC esegue l'override del supporto nativo del driver ODBC di SQL Server Native Client. Solo i tipi di cursore supportati dalla libreria di cursori possono essere utilizzati per la connessione. Non è invece possibile utilizzare i cursori server a questo scopo.

SQL_CUR_USE_DRIVER
Quando questa opzione è impostata, tutto il supporto del cursore nativo per il driver ODBC di SQL Server Native Client può essere usato per la connessione. Non è possibile utilizzare la libreria di cursori ODBC. Tutti i cursori vengono implementati come cursori server.

SQL_CUR_USE_IF_NEEDED
Quando questa opzione è impostata, l'effetto è uguale a SQL_CUR_USE_DRIVER quando viene usato con il driver ODBC di SQL Server Native Client. In fase di connessione, Gestione driver ODBC verifica se il driver ODBC connesso supporta l'opzione SQL_FETCH_PRIOR di SQLFetchScroll. Se il driver non supporta l'opzione, Gestione driver ODBC carica la libreria di cursori ODBC. In caso contrario, Gestione driver ODBC non carica la libreria in questione e l'applicazione utilizza il supporto nativo del driver. Poiché il driver ODBC di SQL Server Native Client supporta SQL_FETCH_PRIOR, Gestione driver ODBC non carica la libreria di cursori ODBC.

La libreria di cursori consente alle applicazioni di utilizzare più istruzioni attive in una connessione, nonché cursori scorrevoli aggiornabili. Per il supporto di tale funzionalità è necessario caricare la libreria di cursori. Usare SQLSetConnectAttr per specificare come usare la libreria di cursori e SQLSetStmtAttr per specificare il tipo di cursore, la concorrenza e le dimensioni del set di righe.

Vedi anche

Modalità di implementazione dei cursori