SQLRateConnection 関数

適合 性
導入されたバージョン: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 hCandidateConnectionhRequestに再利用してはなりません。
1から98までの任意の値を含みます スコアが高いほど、 hCandidateConnectionhRequestとより近いことを示します。
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の値を無視すべきです。

ドライバーマネージャーは 、hRequesthCandidateConnection の親HENVハンドルが同一であることを保証します。 ドライバーマネージャーは 、hRequesthCandidateConnection に関連付けられたプールIDが同一であることを保証します。

アプリケーションはこの関数を直接呼び出すべきではありません。 ドライバー認識接続プーリングをサポートするODBCドライバーはこの機能を実装しなければなりません。

ODBCドライバー開発のためにsqlspi.hを含めてください。