INFO: Cómo habilitar la agrupación de conexiones en una aplicación ODBC

Seleccione idioma Seleccione idioma
Id. de artículo: 164221 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

En este artículo describe cómo habilitar agrupación de conexiones en una aplicación ODBC.

Más información

Microsoft ODBC versión 3.0 introdujo el concepto de agrupación de conexiones.
Agrupación de conexiones permite una aplicación ODBC reutilizar una existente
conexión desde un grupo, por lo que la aplicación de ODBC no tiene que ir
el proceso de conexión completa para cualquier conexión subsiguiente.

Cuando una aplicación ODBC desconecta una conexión, se guarda la conexión
en un grupo en lugar de realmente desconectado. Cuánto permanece de esta conexión
en el grupo depende de la propiedad CPTimeout del controlador ODBC. Cuando el
tiempo de espera, la conexión se cierra y se quita del grupo. El ODBC
aplicación puede utilizar SQLConfigDriver para cambiar el valor de CPTimeout y esto
valor se aplica a todas las aplicaciones de ODBC que utilizan el controlador ODBC especificado.

El valor predeterminado para el CPTimeout es 60 segundos. Agrupación de conexiones es muy útil cuando una aplicación ODBC como Microsoft Internet
Servidor de información (por ejemplo) se conecta y desconecta con frecuencia. Microsoft
Internet Information Server (IIS) versión 3.0 con páginas Active Server (ASP)
aprovecha la agrupación de conexiones. Puede habilitar la agrupación de conexiones para
Usuarios IIS cambiando el valor de StartConnectionPool a 1. StartConnectionPool se encuentra en:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\ASP\Parameters
Una aplicación ODBC puede utilizar SQLSetEnvAttr para habilitar la agrupación de conexiones. Siguiente es un ejemplo de cómo habilitar la agrupación de conexiones en una aplicación ODBC:
   #include <windows.h>
   #include <stdio.h>
   #include <sql.h>
   #include <sqlext.h>

   void main()
   {
   SQLHENV   henv;
   SQLHDBC   hdbc;
   int       i=0;

   if (!SQL_SUCCEEDED(SQLSetEnvAttr(
      NULL,  // make process level cursor pooling
      SQL_ATTR_CONNECTION_POOLING,
      (SQLPOINTER)SQL_CP_ONE_PER_DRIVER,
      SQL_IS_INTEGER)))
   printf("SQLSetEnvAttr/SQL_ATTR_CONNECTION_POOLING error\n");

   if (!SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv)))
      printf("SQLAllocHandle error\n");

   // set the ODBC behavior version.
   if (!SQL_SUCCEEDED(SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,
   (SQLPOINTER) SQL_OV_ODBC2, SQL_IS_INTEGER)))
      printf("SQLSetEnvAttr/SQL_ATTR_ODBC_VERSION error\n");

   //set the matching condition for using an existing connection in the
   pool
   if (!SQL_SUCCEEDED(SQLSetEnvAttr(henv, SQL_ATTR_CP_MATCH,
   (SQLPOINTER) SQL_CP_RELAXED_MATCH, SQL_IS_INTEGER)))
   printf("SQLSetEnvAttr/SQL_ATTR_CP_MATCH error\n");

while (i < 10) {
   if (!SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_DBC,
      henv, &hdbc)))
      printf("SQLAllocHandle error\n");
      if (!SQL_SUCCEEDED(SQLConnect(hdbc,
   (unsigned char*)"testing\0", SQL_NTS,
      (unsigned char*)"sa\0", SQL_NTS,
   (unsigned char*)"\0", SQL_NTS)))
      printf("SQLConnect error\n");
   else
      printf("Connect successfully %d times\n", i);
   //the first time, the application calls SQLDisconenct, it will return
                 //the connection to the //pool
   SQLDisconnect(hdbc);

   if (!SQL_SUCCEEDED(SQLFreeHandle(SQL_HANDLE_DBC, hdbc)))
      printf("SQLFreeHandle error\n");
   i++;
   }
   SQLFreeHandle(SQL_HANDLE_ENV, henv);
   }
				
cuando ODBC de la aplicación llama a SQLDisconnect la primera vez, se guarda la conexión al grupo. Cualquier SQLConnect/SQLDisconnect posteriores que coincida con la condición requiere reutilizará la primera conexión.

Propiedades

Id. de artículo: 164221 - Última revisión: viernes, 07 de julio de 2000 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Open Database Connectivity 3.0
Palabras clave: 
kbmt kbinfo kbprogramming KB164221 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 164221
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com