INFO: How to Enable pool de conexões em um aplicativo ODBC

Traduções deste artigo Traduções deste artigo
ID do artigo: 164221 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

Este artigo descreve como habilitar o pool de conexão em um aplicativo ODBC.

Mais Informações

Microsoft ODBC versão 3.0 introduziu o conceito de pool de conexão.
O pool de conexão permite que um aplicativo ODBC reutilizar um existente
conexão de um pool, então o aplicativo ODBC não tem que ir
o processo de conexão completa de qualquer conexão subseqüente.

Quando um aplicativo ODBC se desconecta uma conexão, a conexão é salvo
em um pool em vez de realmente desconectado. Esta conexão como tempo permanece
no pool depende a propriedade CPTimeout do driver ODBC. Quando o
tempo limite expirar, a conexão é fechada e removida do pool. O ODBC
aplicativo pode usar SQLConfigDriver para alterar o valor de CPTimeout e isso
valor se aplica a todos os aplicativos de ODBC que estão usando o driver ODBC especificado.

O valor padrão para o CPTimeout é 60 segundos. Pool de conexão é muito útil quando um aplicativo ODBC como Microsoft Internet
Servidor de informações (por exemplo) se conecta e desconecta com freqüência. Microsoft
Internet Information Server (IIS) versão 3.0 com Active Server Pages (ASP)
tira proveito de pool de conexão. Você pode ativar pool de conexão para
Usuários do IIS, alterando o valor do StartConnectionPool para 1. StartConnectionPool está localizado em:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\ASP\Parameters
Um aplicativo ODBC pode usar SQLSetEnvAttr para habilitar o pool de conexão. Seguir está um exemplo de como habilitar o pool de conexão em um aplicativo 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);
   }
				
ao ODBC o aplicativo chama SQLDisconnect na primeira vez, a conexão é salvo para o pool. Qualquer SQLConnect/SQLDisconnect subseqüente que coincide com a condição necessária reutilizará a primeira conexão.

Propriedades

ID do artigo: 164221 - Última revisão: sexta-feira, 7 de julho de 2000 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft Open Database Connectivity 3.0
Palavras-chave: 
kbmt kbinfo kbprogramming KB164221 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 164221
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

Submeter comentários

 

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