適合 性
導入されたバージョン:ODBC 3.81 規格準拠:ODBC
Summary
SQLRateConnection は、ドライバーが接続プール内の既存の接続を再利用できるかどうかを判定します。
構文
SQLRETURN SQLRateConnection(
SQLHDBC_INFO_TOKEN hRequest,
SQLHDBC hCandidateConnection,
BOOL fRequiredTransactionEnlistment,
TRANSID transId,
DWORD * pRating );
引数
hRequest
[入力]新しいアプリケーション接続要求を表すトークンハンドルです。
hCandidateConnection(候補者接続)
[入力]接続プール内の既存の接続。 接続はオープン状態でなければなりません。
fRequiredTransactionEnlistment
[入力]もしTRUEの場合、既存の接続の hCandidateConnection を再利用して新しい接続要求(hRequest)を行うには追加の登録が必要です。
transId
[入力] fRequiredTransactionEnlistment がTRUEの場合、 transID はリクエストがリストするDTCトランザクションを表します。
fRequiredTransactionEnlistmentがFALSEの場合、transIDは無視されます。
p評価
[出力] hCandidateConnectionによる hRequestの再利用評価。 この評価は0から100(含む)の範囲です。
返品
SQL_SUCCESS、SQL_ERROR、あるいはSQL_INVALID_HANDLE。
Diagnostics
ドライバーマネージャーは、この機能から返された診断情報を処理しません。
Remarks
SQLRateConnection は、既存の接続がリクエストにどれだけマッチするかを示す0から100(含む)のスコアを生成します。
| Score | 意味(SQL_SUCCESSが返された時) |
|---|---|
| 0 | hCandidateConnection は hRequestに再利用してはなりません。 |
| 1から98までの任意の値を含みます | スコアが高いほど、 hCandidateConnection が hRequestとより近いことを示します。 |
| 99 | 重要な属性の不一致だけが存在します。 ドライバーマネージャーは評価ループを止めるべきです。 |
| 100 | 完璧なマッチだ。 ドライバーマネージャーは評価ループを止めるべきです。 |
| 100を超える他の値は | hCandidateConnection は死んだとマークされており、将来の接続リクエストでも再利用されません。 |
ドライバーマネージャーは、返品コードがSQL_SUCCESS以外(SQL_SUCCESS_WITH_INFOを含む)でないか、評価が100を超えると接続を死んだとマークします。 その切断された接続は再利用されず(将来の接続リクエストでも)、CPTimeoutが通過するとタイムアウトされます。 ドライバーマネージャーは引き続きプールから別の接続を見つけて評価します。
もしドライバーマネージャーがスコアが厳密に100未満(99を含む)の接続を再利用した場合、ドライバーマネージャーはSQLSetConnectAttr(SQL_ATTR_DBC_INFO_TOKEN)を呼び出して接続をアプリケーションが要求した状態に戻します。 この関数呼び出しでは、ドライバーが接続をリセットしてはいけません。
fRequiredTransactionEnlistmentがtrueの場合、hCandidateConnectionの再利用は追加のenlistment(transId != NULL)またはunenlistment(transId == NULL)が必要です。 これは接続の再利用コストと、再利用するなら接続を登録/アンリストすべきかどうかを示します。 fRequireTransactionEnlistmentがFALSEの場合、ドライバーはtransIdの値を無視すべきです。
ドライバーマネージャーは 、hRequest と hCandidateConnection の親HENVハンドルが同一であることを保証します。 ドライバーマネージャーは 、hRequest と hCandidateConnection に関連付けられたプールIDが同一であることを保証します。
アプリケーションはこの関数を直接呼び出すべきではありません。 ドライバー認識接続プーリングをサポートするODBCドライバーはこの機能を実装しなければなりません。
ODBCドライバー開発のためにsqlspi.hを含めてください。