SQLRateConnection-Funktion

Konformität
Eingeführte Version: ODBC 3.81 Normeneinhaltung: ODBC

Summary
SQLRateConnection bestimmt, ob ein Treiber eine bestehende Verbindung im Connection Pool wiederverwenden kann.

Syntax

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

Argumente

hRequest
[Eingabe] Ein Token-Handle, der die neue Anwendungsverbindungsanfrage darstellt.

hCandidateConnection
[Eingabe] Die bestehende Verbindung im Verbindungspool. Die Verbindung muss sich im geöffneten Zustand befinden.

fErforderlichTransaktionAnmeldung
[Eingabe] Wenn TRUE, erfordert die Wiederverwendung der bestehenden Verbindung für die neue Verbindungsanfrage (hRequest) eine zusätzliche Anmeldung.

transId
[Eingabe] Wenn fRequiredTransactionEnlistment TRUE ist, stellt transId die DTC-Transaktion dar, die die Anfrage aufnimmt. Wenn fRequiredTransactionEnlistment FALSCH ist, wird transId ignoriert.

pRating
[Ausgabe] die Wiederverwendungsbewertung von hCandidateConnection für die hRequest. Diese Bewertung liegt zwischen 0 und 100 (inklusive).

Rücklieferungen

SQL_SUCCESS, SQL_ERROR oder SQL_INVALID_HANDLE.

Diagnostics

Der Treibermanager verarbeitet keine Diagnoseinformationen, die von dieser Funktion zurückgegeben werden.

Bemerkungen

SQLRateConnection liefert einen Wert zwischen 0 und 100 (inklusive), der angibt, wie gut eine bestehende Verbindung zur Anfrage passt.

Ergebnis Bedeutung (wenn SQL_SUCCESS zurückgegeben wird)
0 hCandidateConnection darf für die hRequest nicht wiederverwendet werden.
Alle Werte zwischen 1 und 98 (inklusive) Je höher die Punktzahl, desto näher ist die hCandidateConnection-Übereinstimmung mit hRequest.
99 Es gibt nur Missverhältnisse bei unbedeutenden Attributen. Der Fahrermanager sollte die Bewertungsschleife stoppen.
100 Perfekte Übereinstimmung. Der Fahrermanager sollte die Bewertungsschleife stoppen.
Jeder andere Wert größer als 100 hCandidateConnection ist als tot markiert und wird auch bei einer zukünftigen Verbindungsanfrage nicht wiederverwendet.

Der Driver Manager markiert eine Verbindung als tot, wenn der Rückgabecode etwas anderes als SQL_SUCCESS ist (einschließlich SQL_SUCCESS_WITH_INFO) oder die Bewertung höher als 100 ist. Diese abgebrochene Verbindung wird nicht wiederverwendet (auch nicht bei zukünftigen Verbindungsanfragen) und wird schließlich nach Ablauf von CPTimeout zeitlich abgelaufen. Der Fahrermanager wird weiterhin eine andere Verbindung aus dem Pool finden, um sie zu bewerten.

Wenn der Driver Manager eine Verbindung mit einer strikt niedrigeren Punktzahl als 100 (einschließlich 99) wiederverwendet, ruft der Driver Manager SQLSetConnectAttr(SQL_ATTR_DBC_INFO_TOKEN) auf, um die Verbindung wieder in den von der Anwendung geforderten Zustand zurückzusetzen. Der Treiber sollte die Verbindung in diesem Funktionsaufruf nicht zurücksetzen.

Wenn fRequiredTransactionEnlistment TRUE ist, benötigt die Wiederverwendung von hCandidateConnection eine zusätzliche Enlistment (transId != NULL) oder Unenlistment (transId == NULL). Dies zeigt die Kosten für die Wiederverwendung einer Verbindung an und ob der Fahrer die Verbindung an- oder abmelden sollte, wenn er die Verbindung wiederverwenden will. Wenn fRequireTransactionEnlistment FALSCH ist, sollte der Treiber den Wert von transId ignorieren.

Der Driver Manager garantiert, dass der übergeordnete HENV-Handle von hRequest und hCandidateConnection identisch ist. Der Driver Manager garantiert, dass die Pool-ID, die mit hRequest und hCandidateConnection verknüpft ist, dieselbe ist.

Anwendungen sollten diese Funktion nicht direkt aufrufen. Ein ODBC-Treiber, der treiberbewusstes Connection Pooling unterstützt, muss diese Funktion implementieren.

Fügen Sie sqlspi.h für die Entwicklung von ODBC-Treibern hinzu.