Agrupación de conexiones dependientes del controlador

La agrupación de conexiones dependientes del controlador es una nueva característica del Administrador de controladores en Windows 8. La agrupación de conexiones dependientes del controlador permite a los escritores de controladores personalizar el comportamiento de agrupación de conexiones en su controlador ODBC.

Nota:

La agrupación de conexiones dependientes del controlador no se admite con la biblioteca de cursores. Una aplicación recibirá un mensaje de error si intenta habilitar la biblioteca de cursores a través de SQLSetConnectAttr cuando está habilitada la agrupación de conexiones dependientes del controlador.

La agrupación de conexiones dependientes del controlador soluciona los siguientes problemas relacionados con la agrupación de conexiones del Administrador de controladores:

Fragmentación del grupo El Administrador de controladores solo devolverá una conexión del grupo si es una coincidencia exacta con la cadena de conexión de una nueva solicitud de conexión. Una razón para que el Administrador de controladores requiera una coincidencia exacta es que el Administrador de controladores no entiende todas las palabras clave de cadena de conexión específicas del controlador y su valor. Sin embargo, es posible que algunos valores de palabra clave de cadena de conexión (como el nombre de la base de datos) no requieran una coincidencia exacta, ya que el controlador puede cambiar la base de datos en menos del tiempo necesario para abrir una nueva conexión (la diferencia de tiempo exacta depende del origen de datos). Además, las diferencias en algunos atributos de conexión (como SQL_ATTR_CURRENT_CATALOG) pueden tardar más tiempo en cambiarse que las diferencias en otros atributos (como SQL_ATTR_LOGIN_TIMEOUT). Esto también puede impedir que el Administrador de controladores use la conexión reutilizable de menor costo del grupo. Cuando un controlador tiene que crear muchas conexiones nuevas, el rendimiento de una aplicación y la escalabilidad del origen de datos pueden disminuir. La fragmentación del grupo se puede reducir con la agrupación de conexiones dependientes del controlador, ya que un controlador puede calcular mejor el costo de reutilizar una conexión en el grupo para una solicitud de conexión.

No se tiene en cuenta la preferencia de la aplicación Algunos orígenes de datos pueden abrir de forma eficaz nuevas conexiones (en comparación con restablecer algunos atributos), por lo que una aplicación puede preferir abrir una nueva conexión en lugar de intentar reutilizar una conexión ligeramente no coincidente del grupo y restablecer algunos valores (aunque esto puede ser más lento durante la frase de inicialización del grupo de conexiones). Sin embargo, algunas aplicaciones pueden mantener la carga del servidor más pequeña y abrir menos conexiones, aunque puede haber un costo mayor para corregir los errores de coincidencia para el comportamiento correcto. Sin la agrupación de conexiones dependientes del controlador, no se puede especificar este tipo de preferencias de forma eficaz, ya que el Administrador de controladores no reconoce todos los atributos de conexión específicos del controlador. La agrupación de conexiones dependientes del controlador permite a un controlador obtener la preferencia del usuario (con un atributo específico del controlador de SQLSetConnectAttr) para que pueda calcular mejor el coste de reutilizar una conexión desde el grupo en función de las preferencias de un usuario.

Para obtener más información sobre la agrupación de conexiones dependientes del controlador, consulte Desarrollo de reconocimiento del grupo de conexiones en un controlador ODBC.

Determinación de la compatibilidad con controladores

La agrupación de conexiones dependientes del controlador es una característica opcional que puede que un controlador no admita. Para determinar si un controlador la admite, use el SQL_DRIVER_AWARE_POOLING_SUPPORTED InfoType de SQLGetInfo.

Habilitación de una agrupación de conexiones dependientes del controlador

Una aplicación puede usar el reconocimiento de la agrupación de conexiones de un controlador estableciendo el atributo SQL_ATTR_CONNECTION_POOLING en SQL_CP_DRIVER_AWARE con SQLSetEnvAttr. Si un controlador no admite el reconocimiento del grupo de conexiones, se usará la agrupación de conexiones del Administrador de controladores (igual que si se hubiera especificado SQL_CP_ONE_PER_HENV, en lugar de SQL_CP_DRIVER_AWARE). Las aplicaciones ODBC 2.x y 3.x pueden habilitar esta característica.

Consulte también

Desarrollar un controlador ODBC