Pool di connessioni compatibile col driver
Il pool di connessioni compatibile col driver è una nuova funzionalità del driver manager in Windows 8. Il pool di connessioni compatibile col driver consente ai writer del driver di personalizzare il comportamento del pool di connessioni nel driver ODBC.
Nota
Il pool di connessioni compatibile col driver non è supportato dalla libreria di cursori. Un'applicazione riceverà un messaggio di errore se tenta di abilitare la libreria di cursori tramite SQLSetConnectAttr, quando è abilitato il pool di connessioni compatibile col driver.
Il pool di connessioni compatibile col driver risolve i seguenti problemi relativi al pool di connessioni del driver manager:
Frammentazione del pool Il driver manager restituirà una connessione dal pool solo se corrisponde esattamente alla stringa di connessione di una nuova richiesta di connessione. Un motivo per cui il driver manager richiede una corrispondenza esatta è che non comprende tutte le parole chiave della stringa di connessione specifica del driver e il loro relativo valore. Tuttavia, alcuni valori delle parole chiave della stringa di connessione (come il nome del database) potrebbero non richiedere una corrispondenza esatta, poiché il driver può modificare il database in meno tempo rispetto a quello necessario per aprire una nuova connessione (la differenza di tempo esatta dipende dall'origine dati). Inoltre, le differenze in alcuni attributi di connessione (com SQL_ATTR_CURRENT_CATALOG) possono richiedere più tempo per le modifiche rispetto alle differenze in altri attributi (come SQL_ATTR_LOGIN_TIMEOUT). Anche questo può impedire al driver manager di usare la connessione riutilizzabile a costo più basso del pool. Quando un driver deve creare molte nuove connessioni, le prestazioni di un'applicazione e la scalabilità dell’origine dati possono diminuire. La frammentazione del pool può essere ridotta col pool di connessioni compatibile col driver perché un driver può stimare meglio il costo del riutilizzo di una connessione nel pool per una richiesta di connessione.
Nessuna considerazione della preferenza dell'applicazione Alcune origini dati possono aprire in maniera efficiente nuove connessioni (rispetto al ripristino di alcuni attributi), pertanto un'applicazione potrebbe preferire l'apertura di una nuova connessione anziché tentare di riutilizzare una connessione leggermente non corrispondente dal pool e ripristinare alcuni valori (anche se questo potrebbe risultare più lento durante la fase di inizializzazione del pool di connessione). Tuttavia, è possibile che alcune applicazioni mantengano il carico del server più piccolo e aprano meno connessioni, anche se potrebbe esserci un costo maggiore per correggere le mancate corrispondenze per il comportamento corretto. Senza il pool di connessioni in grado di riconoscere il driver, non è possibile specificare questo tipo di preferenza in modo efficace, perché il driver manager non riconosce tutti gli attributi di connessione specifici del driver. Il pool di connessioni compatibile col driver consente a un driver di ottenere le preferenze dell’utente (con un attributo specifico del driver di SQLSetConnectAttr) così da poter stimare meglio il costo di riutilizzo di una connessione dal pool in base alle preferenze dell’utente.
Per ulteriori informazioni sul pool di connessioni compatibile col driver, vedere Sviluppo di un pool di connessioni compatibili in un driver ODCB.
Determinazione del supporto del driver
Il pool di connessioni compatibile con driver è una funzionalità facoltativa che un driver potrebbe non supportare. Per determinare se un driver la supporta, usare SQL_DRIVER_AWARE_POOLING_SUPPORTED InfoType di SQLGetInfo.
Come abilitare il pool di connessioni compatibile col driver
Un'applicazione può usare la consapevolezza del pool di connessioni di un driver impostando l'attributo SQL_ATTR_CONNECTION_POOLING su SQL_CP_DRIVER_AWARE con SQLSetEnvAttr. Se un driver non supporta la consapevolezza del pool di connessioni, verrà usato il pool di connessioni del driver manager (come se fosse stato specificato SQL_CP_ONE_PER_HENV, anziché SQL_CP_DRIVER_AWARE). Le applicazioni ODBC 2.x e 3.x possono abilitare questa funzionalità.