Treiberfähiges Verbindungspooling

Treiberfähige Verbindungspooling ist ein neues Feature des Treiber-Managers in Windows 8. Treiberfähige Verbindungspooling ermöglicht Treiberautoren das Verhalten des Verbindungspoolings in ihrem ODBC-Treiber anzupassen.

Hinweis

Treiberfähige Verbindungspooling wird mit der Cursorbibliothek nicht unterstützt. Eine Anwendung erhält eine Fehlermeldung, wenn versucht wird, die Cursorbibliothek über SQLSet Verbinden Attr zu aktivieren, wenn treiberfähige Verbindungspooling aktiviert ist.

Treiber-fähige Verbindungspooling behebt die folgenden Probleme im Zusammenhang mit dem Verbindungspooling des Treiber-Managers:

Poolfragmentierung Der Treiber-Manager gibt nur eine Verbindung vom Pool zurück, wenn es sich um eine genaue Übereinstimmung mit dem Verbindungszeichenfolge einer neuen Verbindungsanforderung handelt. Ein Grund dafür, dass der Treiber-Manager eine genaue Übereinstimmung erfordert, besteht darin, dass der Treiber-Manager nicht alle treiberspezifischen Verbindungszeichenfolge Schlüsselwort (keyword) und seinen Wert versteht. Einige Verbindungszeichenfolge Schlüsselwort (keyword) Werte (z. B. der Name der Datenbank) erfordern jedoch möglicherweise keine genaue Übereinstimmung, da der Treiber die Datenbank in weniger als der Zeit ändern kann, die zum Öffnen einer neuen Verbindung erforderlich ist (der genaue Zeitunterschied hängt von der Datenquelle ab). Außerdem können Unterschiede bei einigen Verbindungsattributen (z. B. SQL_ATTR_CURRENT_CATALOG) mehr Zeit in Anspruch nehmen als Unterschiede in anderen Attributen (z. B. SQL_ATTR_LOGIN_TIMEOUT). Dies kann auch verhindern, dass der Treiber-Manager die kostengünstigste, wiederverwendbare Verbindung aus dem Pool verwendet. Wenn ein Treiber viele neue Verbindungen erstellen muss, kann die Leistung einer Anwendung verringert werden, und die Skalierbarkeit der Datenquelle kann verringert werden. Die Poolfragmentierung kann mit treiberfähigem Verbindungspooling reduziert werden, da ein Treiber die Kosten für die erneute Nutzung einer Verbindung im Pool für eine Verbindungsanforderung besser abschätzen kann.

Keine Berücksichtigung der Anwendungspräferenz Einige Datenquellen können neue Verbindungen effizient öffnen (im Vergleich zum Zurücksetzen einiger Attribute), daher kann eine Anwendung lieber eine neue Verbindung öffnen, anstatt eine leicht übereinstimmende Verbindung aus dem Pool wiederzuverwenden und einige Werte zurückzusetzen (obwohl dies während des Initialisierungsausdrucks des Verbindungspools langsamer sein kann). Einige Anwendungen können jedoch die Serverlast kleiner halten und weniger Verbindungen öffnen, obwohl es möglicherweise größere Kosten gibt, um die Übereinstimmungen für das richtige Verhalten zu beheben. Ohne treiberfähige Verbindungspooling können Sie diese Art von Einstellung nicht effektiv angeben, da der Treiber-Manager nicht alle treiberspezifischen Verbindungsattribute erkennt. Die Treiberverbindungspooling ermöglicht es einem Treiber, die Benutzereinstellung (mit einem treiberspezifischen Attribut von SQLSet Verbinden Attr) abzurufen, sodass die Kosten für die erneute Nutzung einer Verbindung aus dem Pool basierend auf der Einstellung eines Benutzers besser geschätzt werden können.

Weitere Informationen zum treiberfähigen Verbindungspooling finden Sie unter Developing Verbinden ion-Pool Awareness in einem ODBC-Treiber.

Ermitteln der Treiberunterstützung

Treiberfähige Verbindungspooling ist ein optionales Feature, das ein Treiber möglicherweise nicht unterstützt. Um festzustellen, ob ein Treiber dies unterstützt, verwenden Sie den SQL_DRIVER_AWARE_POOLING_SUPPORTED InfoType von SQLGetInfo.

Aktivieren von treiberfähigen Verbinden ion-Pooling

Eine Anwendung kann die Verbindungspooling-Sensibilisierung eines Treibers verwenden, indem sie das attribut SQL_ATTR_CONNECTION_POOLING auf SQL_CP_DRIVER_AWARE mit SQLSetEnvAttr festlegen. Wenn ein Treiber die Verbindungspool-Sensibilisierung nicht unterstützt, wird die Verbindungspoolerstellung des Treiber-Managers verwendet (identisch mit der Angabe von SQL_CP_ONE_PER_HENV anstelle von SQL_CP_DRIVER_AWARE). ODBC 2.x- und 3.x-Anwendungen können dieses Feature aktivieren.

Weitere Informationen

Developing an ODBC Driver (Entwickeln eines ODBC-Treibers)