INFO: Chamada de gerenciamento de pool de conexão por objetos ADO do ASP

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: 191572
Sumário
Ao usar o ActiveX Data Objects (ADO) dentro de uma página Active Server Pages (ASP), é importante saber como utilizar o pool com eficiência de conexões. Ao usar combinações diferentes de conexões de ADO implícitas e explícitas com conjuntos de registros ADO e comandos instanciados com Server.CreateObject ou apenas CreateObject, é possível para as conexões não seja retornado para o pool de conexão. A tabela na seção "Mais informações" descreve os possíveis cenários e resultados.

Observação Conexões que usam os provedores OLE DB do Jet e drivers ODBC não são colocados em pool já que esses provedores e drivers não suportam pool.
Mais Informações
Seguindo um tipo de conexão do lado esquerdo de grade e um tipo de conjunto de registros ou comando da parte superior da grade, você pode encontrar as respostas para perguntas a seguir:

  • É a conexão ADO (conexão) retornou ao pool de conexão?
  • Qual instrução retorna a conexão para o pool?
                |Recordset     |Recordset     |Command      |Command                |created       |created       |created      |created                |with          |with          |with         |with                |Server.       |CreateObject  |Server.      |CreateObject                |CreateObject  |              |CreateObject |   -----------------------------------------------------------------------   Explicit     |1.Yes         |1.Yes         |1.Yes        |1.Yes   Connection   |2.Conn.Close  |2.Conn.Close  |2.Conn.Close |2.Conn.Close   created with |              |              |             |   Server.      |              |              |             |   CreateObject |              |              |             |   -----------------------------------------------------------------------   Explicit     |1.Yes         |1.Yes         |1.Yes        |1.Yes   Connection   |2.Conn.Close  |2.Conn.Close  |2.Conn.Close |2.Conn.Close   created with |              |              |             |   CreateObject |              |              |             ---------------------------------------------------------------------------   Implicit     |1.No          |1.Yes         |1.No         |1.No   Connection   |2.N/A         |2.Set         |2.N/A        |2.N/A                |              |  Recordset   |             |                |              |  = Nothing   |             |---------------------------------------------------------------------------				

Código de exemplo


Observação <username>Você deve alterar o UID = <nomedousuário> e PWD = < senha de alta segurança > para os valores corretos antes de executar esses códigos. Certifique-se de que UID tenha as permissões apropriadas para executar esta operação no banco de dados.
   Explicit Connection - Server.CreateObject      sConnect="DRIVER={SQL Server};SERVER=ServerName;DATABASE=Pubs;UID=<username>;PWD=<strong password>"      Set Conn = Server.CreateObject("ADODB.Connection")      Conn.Open sConnect   Explicit Connection - CreateObject      sConnect="DRIVER={SQL Server};SERVER=ServerName;DATABASE=Pubs;UID=<username>;PWD=<strong password>"      Set Conn = CreateObject("ADODB.Connection")      Conn.Open sConnect   Implicit Connection with Recordset      sConnect="DRIVER={SQL Server};SERVER=ServerName;DATABASE=Pubs;UID=<username>;PWD=<strong password>"      Set Rs = CreateObject("ADODB.Recordset")      Rs.Open "SELECT * FROM Authors", sConnect				

Como recriar esses testes

  1. Criar uma página ASP com um dos seguintes cenários.
          Sample ASP page:      <%@ LANGUAGE="VBSCRIPT" %>      <HTML>      <BODY>      >%      dim cn(10)      dim cmd(10)      For x = 0 to 10       Set cn(x) = Server.CreateObject("ADODB.Connection")       cn(x).Open "DRIVER={SQL Server};SERVER=Ovteam;DATABASE=Pubs;UID=<username>;PWD=<strong password>"       Set cmd(x) = Server.CreateObject("ADODB.Command")       cmd(x).activeconnection = cn(x)       cmd(x).commandtext = "SELECT * FROM Authors"       cmd(x).execute       Response.Write "Command executed: " & x & "<BR>"       Set cmd(x) = Nothing       cn(x).close 'comment this line out to recreate the problem       Set cn(x) = Nothing    Next    %>    </BODY>    <HTML>					
  2. No SQL Server, abra o Monitor de desempenho : no menu Iniciar , selecione programas , clique em Ferramentas administrativas (comum) e, em seguida, selecione Desempenho do sistema .
  3. Clique em + para adicionar um contador.
  4. Altere o objeto para o SQL Server.
  5. Selecione o contador de Conexões de usuário e clique em Adicionar .
  6. Clique em OK .
  7. Execute a página ASP.
  8. Observe o contador de conexões de usuário. Se a conexão está sendo retornada para o pool, em seguida, será reutilizado e ver apenas o contador vá até uma por meio de duas conexões do ponto inicial. Se as conexões de começam a subir, em seguida, eles não estão sendo retornados para o pool de conexão para ser reutilizado e novas conexões estão sendo criados para cada objeto ADO.

Conclusão

Geralmente não é uma boa prática criar implicitamente conexões. Quando uma conexão é criada implicitamente não tem um identificador para a conexão de chamada e fechar a conexão. A conexão continua a permanecer aberta e não utilizados até os horários de conexão de saída. O tempo limite padrão com o pool de conexão habilitado para o SQL Server é 60 segundos. Quando o pool de conexão não está ativado, o SQL Server descarta a conexão imediatamente após a página ASP tenha sido analisada mas há outros problemas de desempenho a serem considerados ao pool de conexão não está em.
Referências
Para obter informações adicionais sobre o pool de conexões, consulte os seguintes artigos na Base de dados de Conhecimento Microsoft:
169470INF: Perguntas mais frequentes sobre o pool de conexão ODBC
Para obter informações adicionais sobre connectionADO/ASP escalabilidade, consulte os seguintes artigos na Base de dados de Conhecimento Microsoft:
176056INFO: Escalabilidade de ADO/ASP perguntas FREQÜENTES
  1. Conectar ao Support Online no seguinte endereço de Internet:
  2. Na caixa Meu pergunta é sobre, selecione todos os produtos.
  3. Na caixa Meu pergunta É, digite a identificação do artigo (qnumber) do artigo que você deseja ver. Por exemplo, digite "" Q162192"" (sem as aspas).
  4. Clique em Localizar (próximo à caixa minha pergunta É). Essa pesquisa irá retornar de um a vários títulos de artigo. A Identificação do artigo aparece no canto superior esquerdo do artigo. Você pode ver a identificação do artigo somente após você clicar em para ler o artigo.
  5. Clique no título do artigo para exibi-lo.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 191572 - Última Revisão: 06/29/2007 03:20:06 - Revisão: 2.3

Microsoft ActiveX Data Objects 1.5, Microsoft ActiveX Data Objects 2.0, Microsoft Active Server Pages 4.0, Microsoft Data Access Components 2.5

  • kbmt kbdatabase kbinfo KB191572 KbMtpt
Comentários