Funzione SQLRateConnection

Conformità
Versione introdotta: Conformità agli standard ODBC 3.81: ODBC

Sommario
SQLRateConnection determina se un driver può riutilizzare una connessione esistente nel pool di connessioni.

Sintassi

  
SQLRETURN  SQLRateConnection(  
                SQLHDBC_INFO_TOKEN   hRequest,  
                SQLHDBC              hCandidateConnection,  
                BOOL                 fRequiredTransactionEnlistment,  
                TRANSID              transId,  
                DWORD *              pRating );  

Arguments

hRichiesta
[Input] Un handle di token che rappresenta la nuova richiesta di connessione applicativa.

hCandidateConnection
[Input] La connessione esistente nel pool di connessioni. La connessione deve essere in uno stato aperto.

fRequiredTransactionEnenrollment
[Input] Se TRUE, riutilizzare l'hCandidateConnection della connessione esistente per la nuova richiesta di connessione (hRequest) richiede un arruolamento aggiuntivo.

transId
[Input] Se fRequiredTransactionEnenrollment è TRUE, transId rappresenta la transazione DTC che la richiesta inserirà. Se fRequiredTransactionEnlistment è FALSO, il transId verrà ignorato.

pRating
[Output] Valutazione di riutilizzo di hCandidateConnection per la hRequest. Questa valutazione sarà compresa tra 0 e 100 (inclusi).

Returns

SQL_SUCCESS, SQL_ERROR o SQL_INVALID_HANDLE.

Diagnostica

Il Driver Manager non elaborerà le informazioni diagnostiche restituite da questa funzione.

Osservazioni:

SQLRateConnection produce un punteggio tra 0 e 100 (incluso) che indica quanto bene una connessione esistente corrisponde alla richiesta.

Score Significato (quando SQL_SUCCESS viene restituito)
0 hCandidateConnection non deve essere riutilizzato per la hRequest.
Qualsiasi valore compreso tra 1 e 98 (inclusi) Più alto è il punteggio, più vicino è l'abbinamento di hCandidateConnection con hRequest.
99 Ci sono solo disallineamenti in attributi insignificanti. Il Driver Manager dovrebbe interrompere il ciclo di valutazione.
100 Corrispondenza perfetta. Il Driver Manager dovrebbe interrompere il ciclo di valutazione.
Qualsiasi altro valore superiore a 100 hCandidateConnection è segnalato come morto e non verrà riutilizzato nemmeno in una futura richiesta di connessione.

Il Driver Manager segnerà una connessione come morta se il codice di ritorno è diverso da SQL_SUCCESS (inclusa SQL_SUCCESS_WITH_INFO) o se la valutazione è superiore a 100. Quella connessione morta non verrà riutilizzata (nemmeno nelle future richieste di connessione) e alla fine verrà scaduta dopo il passaggio di CPTimeout. Il Driver Manager continuerà a trovare un'altra connessione dal pool per valutare.

Se il Driver Manager ha riutilizzato una connessione con punteggio strettamente inferiore a 100 (inclusi 99), il Driver Manager chiamerà SQLSetConnectAttr(SQL_ATTR_DBC_INFO_TOKEN) per resettare la connessione nello stato richiesto dall'applicazione. Il driver non dovrebbe resettare la connessione in questa chiamata di funzione.

Se il riutilizzo di hCandidateEnenrollment è TRUE, il riutilizzo di hCandidateConnection richiede un arruolamento extra (transId != NULL) o un-en-un-enrollment (transId == NULL). Questo indica il costo di riutilizzare una connessione e se il driver dovrebbe arruolare o disattivare la connessione se intende riutilizzarla. Se fRequireTransactionEnlistment è FALSO, il driver dovrebbe ignorare il valore di transId.

Il Driver Manager garantisce che il handle HENV principale di hRequest e hCandidateConnection siano lo stesso. Il Driver Manager garantisce che l'ID del pool associato a hRequest e hCandidateConnection sia lo stesso.

Le applicazioni non dovrebbero chiamare direttamente questa funzione. Un driver ODBC che supporta il pooling di connessioni consapevole del driver deve implementare questa funzione.

Includere sqlspi.h per lo sviluppo dei driver ODBC.