Функция SQLRateConnection

Соответствие
Введенная версия: Соответствие стандартам ODBC 3.81: ODBC

Сводка
SQLRateConnection определяет, может ли драйвер повторно использовать существующее соединение в пуле соединений.

Syntax

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

Arguments

hRequest
[Ввод] Токен-дескриптор, представляющий запрос на подключение нового приложения.

hCandidateConnection
[Ввод] Существующее соединение в пуле соединений. Соединение должно быть в открытом состоянии.

fRequiredTransactionEnlistment
[Ввод] Если TRUE, повторное использование hCandidateConnection существующего соединения для нового запроса соединения (hRequest) требует дополнительного зачисления.

transId
[Ввод] Если fRequiredTransactionEnlistment — TRUE, transId представляет транзакцию DTC, которую запрос будет зачислен. Если fRequiredTransactionEnlistment — FALSE, transId будет игнорирован.

pRating
[Выход] Рейтинг повторного использования hCandidateConnection для hRequest. Этот рейтинг будет от 0 до 100 (включительно).

Returns

SQL_SUCCESS, SQL_ERROR или SQL_INVALID_HANDLE.

Diagnostics

Менеджер драйверов не обрабатывает диагностическую информацию, возвращаемую из этой функции.

Remarks

SQLRateConnection показывает балл от 0 до 100 (включительно), указывающий, насколько хорошо существующее соединение соответствует запросу.

Балл Значение (когда SQL_SUCCESS возвращается)
0 hCandidateConnection не должен использоваться повторно для hRequest.
Любые значения от 1 до 98 (включительно) Чем выше балл, тем ближе совпадение hCandidateConnection с hRequest.
99 Несоответствия встречаются только в незначительных характеристиках. Менеджер водителей должен прервать цикл рейтингов.
100 Идеальное совпадение. Менеджер водителей должен прервать цикл рейтингов.
Любое другое значение больше 100 hCandidateConnection помечен как мёртвый и не будет использоваться повторно даже в будущем запросе соединения.

Менеджер водителей пометит соединение как мертвое, если код возврата отличается от SQL_SUCCESS (включая SQL_SUCCESS_WITH_INFO) или если рейтинг превышает 100. Это мёртвое соединение не будет использоваться повторно (даже в будущих запросах) и в итоге будет истечено после завершения CPTimeout. Менеджер водителей продолжит искать другое соединение из пула для оценки.

Если Driver Manager повторно использует соединение с рейтингом строго меньше 100 (включая 99), Driver Manager вызовет SQLSetConnectAttr(SQL_ATTR_DBC_INFO_TOKEN), чтобы сбросить соединение в запрошенное приложением состояние. Драйвер не должен сбрасывать соединение в этом вызове функции.

Если fRequiredTransactionEnlistment — TRUE, повторное использование hCandidateConnection требует дополнительного enlistment (transId != NULL) или unenlistment (transId == NULL). Это показывает стоимость повторного использования соединения и то, должен ли драйвер включать или отключать соединение, если собирается использовать его повторно. Если fRequireTransactionEnlistment — FALSE, драйвер должен игнорировать значение transId.

Driver Manager гарантирует, что родительский HENV-дескриптор hRequest и hCandidateConnection совпадает. Менеджер драйверов гарантирует, что идентификаторы пула, связанные с hRequest и hCandidateConnection , совпадают.

Приложения не должны вызывать эту функцию напрямую. Драйвер ODBC, поддерживающий пул соединений с учётом драйвера, должен реализовать эту функцию.

Включите sqlspi.h для разработки драйверов ODBC.