Função SQLRateConnection

Conformidade
Versão Introduzida: Conformidade com as Normas ODBC 3.81: ODBC

Summary
O SQLRateConnection determina se um driver pode reutilizar uma ligação existente no pool de ligações.

Syntax

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

Arguments

hRequest
[Entrada] Um handle de token que representa o novo pedido de ligação à aplicação.

hCandidateConnection
[Entrada] A ligação existente no pool de ligações. A ligação deve estar num estado aberto.

fRequiredTransactionEnlistment
[Entrada] Se TRUE, reutilizar a hCandidateConnection da ligação existente para o novo pedido de ligação (hRequest) requer um alistamento adicional.

transId
[Entrada] Se o fRequiredTransactionEnlistment for TRUE, o transId representa a transação DTC que o pedido irá registar. Se o fRequiredTransactionEnlistment for FALSO, o transId será ignorado.

pRating
[Saída] Classificação de reutilização do hCandidateConnection para o hRequest. Esta classificação estará entre 0 e 100 (inclusive).

Devoluções

SQL_SUCCESS, SQL_ERROR ou SQL_INVALID_HANDLE.

Diagnósticos

O Gestor de Drivers não processará as informações de diagnóstico devolvidas desta função.

Observações

O SQLRateConnection produz uma pontuação entre 0 e 100 (inclusive) indicando quão bem uma ligação existente corresponde ao pedido.

Score Significado (quando SQL_SUCCESS é devolvido)
0 hCandidateConnection não pode ser reutilizado para o hRequest.
Quaisquer valores entre 1 e 98 (inclusive) Quanto maior a pontuação, mais próxima será a correspondência hCandidateConnection com hRequest.
99 Só existem descompassos em atributos insignificantes. O Driver Manager deve interromper o ciclo de avaliação.
100 Combinação perfeita. O Driver Manager deve interromper o ciclo de avaliação.
Qualquer outro valor superior a 100 hCandidateConnection está marcado como inativo e não será reutilizado mesmo num pedido de ligação futuro.

O Driver Manager marcará uma ligação como morta se o código de retorno for diferente de SQL_SUCCESS (incluindo SQL_SUCCESS_WITH_INFO) ou se a classificação for superior a 100. Essa ligação inativa não será reutilizada (mesmo em pedidos futuros de ligação) e acabará por ser esgotada após a passagem do CPTimeout. O Driver Manager continuará a encontrar outra ligação do pool para avaliar.

Se o Gestor de Drivers reutilizou uma ligação cuja pontuação é estritamente inferior a 100 (incluindo 99), o Gestor de Drivers chamará SQLSetConnectAttr(SQL_ATTR_DBC_INFO_TOKEN) para reiniciar a ligação ao estado solicitado pela aplicação. O driver não deve reiniciar a ligação nesta chamada de função.

Se fRequiredTransactionEnlistment for TRUE, reutilizar hCandidateConnection requer um alistamento extra (transId != NULL) ou desalistamento (transId == NULL). Isto indica o custo de reutilizar uma ligação e se o driver deve registar ou desligar a ligação caso vá reutilizar a ligação. Se o fExigeTransactionEnlistment for FALSO, o driver deve ignorar o valor de transId.

O Driver Manager garante que o handle HENV principal do hRequest e do hCandidateConnection são os mesmos. O Driver Manager garante que o ID do pool associado ao hRequest e ao hCandidateConnection é o mesmo.

As aplicações não devem chamar esta função diretamente. Um driver ODBC que suporta pooling de conexões consciente do driver deve implementar esta função.

Incluir sqlspi.h para desenvolvimento de drivers ODBC.