一致性
推出版本:ODBC 3.81 标准合规:ODBC
总结
SQLRateConnection 决定驱动程序是否可以重复使用连接池中的现有连接。
Syntax
SQLRETURN SQLRateConnection(
SQLHDBC_INFO_TOKEN hRequest,
SQLHDBC hCandidateConnection,
BOOL fRequiredTransactionEnlistment,
TRANSID transId,
DWORD * pRating );
Arguments
h请求
[输入]一个代表新应用连接请求的令牌句柄。
hCandidateConnection
[输入]连接池中的现有连接。 连接必须处于开启状态。
fRequiredTransactionEnlistment
[输入]如果为真,则为新的连接请求(hRequest)重复使用现有连接的 hCandidateConnection,需要额外的一次挂载。
transId
[输入]如果 fRequiredTransactionEnlistment 为 TRUE,transId 代表请求将要列入的 DTC 事务。 如果 fRequiredTransactionEnlistment 是 FALSE,transID 将被忽略。
pRating(评级)
[输出] hCandidateConnection对 hRequest的重用评级。 评分范围在0到100之间(含)。
Returns
SQL_SUCCESS、SQL_ERROR或SQL_INVALID_HANDLE。
诊断
驱动程序管理器不会处理该功能返回的诊断信息。
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通过后最终会超时。 司机经理会继续从池中寻找其他连接进行评分。
如果驱动程序管理器重用了得分严格小于100的连接(包括99),驱动程序管理器会调用SQLSetConnectAttr(SQL_ATTR_DBC_INFO_TOKEN)将连接重置回应用程序请求的状态。 驱动程序不应在此函数调用中重置连接。
如果 fRequiredTransactionEnlistment 为真,重用 hCandidateConnection 需要额外的 enlistment (transId != NULL) 或 unenlistment (transId == NULL)。 这表示重复使用连接的成本,以及如果要重用连接,驱动程序是否应该重新启用或取消连接。 如果 fRequireTransactionEnlistment 是 FALSE,驱动程序应忽略 transId。
驱动管理器保证 hRequest 和 hCandidateConnection 的父 HENV 句柄相同。 驱动程序管理器保证 与 hRequest 和 hCandidateConnect 关联的池 ID 相同。
应用程序不应直接调用该函数。 支持驱动程序识别连接池的 ODBC 驱动程序必须实现此功能。
包含 sqlspi.h 以开发 ODBC 驱动。