Como activar o agrupamento de ligações de ODBC de uma aplicação de ADO do Visual Basic

Artigo: 237844 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Por predefinição, o ADO utiliza sessão OLEDB agrupamento para manter um conjunto de ligações para a base de dados. Em alguns casos, poderá pretender utilizar ODBC pooling de conexões em vez de pooling de sessões OLEDB. Este artigo descreve o que é necessário activar o agrupamento de ligações ODBC do Visual Basic/ADO aplicação.

Nota O seguinte só se aplica se estiver a utilizar um controlador ODBC para estabelecer a ligação à base de dados.

Mais Informação

Para activar o agrupamento de ligações ODBC do Visual Basic/ADO aplicação, existem dois passos necessários:
  1. Abra o Administrador da origem de dados de ODBC a partir do painel de controlo . Seleccione o separador. Pooling de localizar o controlador que está a utilizar na lista e clique duas vezes no mesmo. Seleccione a opção de agrupamento de ligações a este controlador e introduza um valor de tempo de espera.

    Nota Isto só se aplica ao administrador de ODBC versão 3.5 ou posterior. Se estiver a utilizar uma versão anterior do administrador de, em seguida, terá de localizar o valor CPTimeout para o controlador no registo sob a seguinte chave de registo e defina o valor:
    HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Driver_Name
    Para mais informações sobre como definir este valor no registo, consulte o seguinte documento:
    http://msdn2.microsoft.com/en-us/library/ms810829.aspx
    O segundo passo consiste em Adicionar uma chamada de função de API de ODBC para SQLSetEnvAttr na sua aplicação com as opções apropriadas para activar o ODBC pooling de conexões para o processo. Esta função só deve ser chamada uma vez por processo e tem de ser chamada antes para executar qualquer código ADO. Seguem-se os passos necessários para criar um exemplo de código do Visual Basic completo que demonstram este:
    1. Crie um novo projecto EXE padrão do Visual Basic. É criado o Form1 por predefinição.
    2. No menu Project , escolha referências e adicione uma referência à Microsoft ActiveX Data Objects .
    3. No formulário predefinido, adicione um CommandButton.
    4. Corte e cole o seguinte código no formulário. Terá de modificar a cadeia de ligação, de modo a que estabelece ligação com a base de dados:

      Nota Tem de alterar ID = < ID de Utilizador > e a palavra-passe = < palavra-Passe Seguras > para os valores correctos antes de executar este código. Certifique-se que o ID de utilizador tem as permissões adequadas para efectuar esta operação na base de dados.
      Option Explicit
      Dim rc As Long
      
      Const dbconnstring = "DSN=<Your DSN>;uid=<User ID>;pwd=<Strong Password>;OLE DB Services=-2"
      
      Const SQL_ATTR_CONNECTION_POOLING = 201
      Const SQL_CP_ONE_PER_DRIVER = 1
      Const SQL_IS_INTEGER = -6
      Const SQL_CP_OFF = 0
      
      Private Declare Function SQLSetEnvAttr Lib "odbc32.dll" ( _
                          ByVal EnvironmentHandle As Long, _
                          ByVal EnvAttribute As Long, _
                          ByVal ValuePtr As Long, _
                          ByVal StringLength As Long) As Integer
                          
      Private Sub Command1_Click()
          
          Dim SQL As String
         
          'Test connection pooling
          Dim i As Long
          For i = 1 To 10
              Dim cn As ADODB.Connection
              Set cn = New ADODB.Connection
              cn.Open dbconnstring
              cn.Close
              Set cn = Nothing
          Next
              
          MsgBox "Connection finished"
      
      End Sub
      
      Private Sub Form_Load()
          
          'Enable connection pooling ..  this must be done before any ADO calls
          'are made.  Only needs to occur one time per process
          rc = SQLSetEnvAttr(0&, _
                       SQL_ATTR_CONNECTION_POOLING, _
                       SQL_CP_ONE_PER_DRIVER, _
                       SQL_IS_INTEGER)
          If rc <> 0 Then
              Debug.Print "SQLSetEnvAttr Error " & rc
          End If
      
      End Sub
      
      Private Sub Form_Unload(Cancel As Integer)
              
          Call SQLSetEnvAttr(0&, _
                      SQL_ATTR_CONNECTION_POOLING, _
                      SQL_CP_OFF, _
                      SQL_IS_INTEGER)
      
      End Sub
      							
    5. Compile o projecto para um EXE. Antes de executar um EXE compilado, poderá utilizar algumas utilitário para monitorizar as ligações a ser efectuadas na base de dados. Com o SQL Server 7.0, é possível utilizar Profiler (SQL analisar com o SQL Server 6.5). Executar este programa e deverá ver apenas uma ligação efectuada na base de dados. Cada ligação subsequente utiliza a ligação existente no conjunto.

Propriedades

Artigo: 237844 - Última revisão: quinta-feira, 15 de Fevereiro de 2007 - Revisão: 4.2
A informação contida neste artigo aplica-se a:
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.1 Service Pack 1
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palavras-chave: 
kbmt kbhowto KB237844 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 237844

Submeter comentários