Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.