Função SQLRateConnection

Conformidade
Versão Introduzida: ODBC 3.81 Conformidade com os Padronizados: ODBC

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

Sintaxe

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

Argumentos

hRequest
[Entrada] Um token handle representando a nova solicitação de conexão de aplicação.

hCandidateConnection
[Entrada] A conexão existente no pool de conexões. A conexão deve estar em estado aberto.

fRequiredTransactionEnlistment
[Entrada] Se for TRUE, reutilizar a hCandidateConnection da conexão existente para a nova solicitação de conexão (hRequest) requer um alistamento adicional.

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

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

Returns

SQL_SUCCESS, SQL_ERROR ou SQL_INVALID_HANDLE.

Diagnostics

O Gerenciador de Drivers não processará as informações de diagnóstico retornadas dessa função.

Remarks

O SQLRateConnection produz uma pontuação entre 0 e 100 (inclusive) indicando o quão bem uma conexão existente corresponde à solicitação.

Score Significado (quando SQL_SUCCESS é devolvido)
0 hCandidateConnection não deve 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ó há descompassos em atributos insignificantes. O Driver Manager deveria encerrar o ciclo de avaliação.
100 Combinação perfeita. O Driver Manager deveria encerrar o ciclo de avaliação.
Qualquer outro valor maior que 100 hCandidateConnection está marcado como inativo e não será reutilizado nem mesmo em uma solicitação futura de conexão.

O Driver Manager marcará uma conexã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 maior que 100. Essa conexão inativa não será reutilizada (mesmo em futuras solicitações de conexão) e eventualmente será expirada após a passagem do CPTimeout. O Driver Manager continuará buscando outra conexão do pool para avaliar.

Se o Gerenciador de Drivers reutilizou uma conexão cuja pontuação é estritamente menor que 100 (incluindo 99), o Gerenciador de Drivers chamará SQLSetConnectAttr(SQL_ATTR_DBC_INFO_TOKEN) para redefinir a conexão ao estado solicitado pela aplicação. O driver não deve resetar a conexão nessa chamada de função.

Se o fRequiredTransactionEnlistment for TRUE, reutilizar hCandidateConnection requer um alistamento extra (transId != NULL) ou desalistamento (transId == NULL). Isso indica o custo de reutilizar uma conexão e se o driver deve registrar ou desligar a conexão caso vá reutilizá-la. Se o fExigeTransactionEnlistment for FALSO, o driver deve ignorar o valor de transId.

O Driver Manager garante que o handle HENV pai do hRequest e do hCandidateConnection sejam os mesmos. O Driver Manager garante que o ID do pool associado ao hRequest e ao hCandidateConnection seja o mesmo.

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

Incluir sqlspi.h para desenvolvimento de drivers ODBC.