Pergunta

eu abrir uma conexão assim:

Using conn as New OdbcConnection(connectionString)
    conn.Open()
    //do stuff
End Using

Se o pool de conexão é habilitado, a conexão é não fisicamente fechada, mas liberado para a piscina e vai ser reutilizados. Se for desativado, ele será fisicamente fechada.

Existe alguma maneira de saber programação se o pool de conexão é habilitado ou não? e o número de conexões utilizados e não utilizados atualmente aberto na piscina?

EDIT: Eu preciso para obter essa informação a partir do programa, eu não posso ir e verificá-lo manualmente em cada PC onde o programa será implantado

.
Foi útil?

Solução

Parece que você pode apenas ler esta chave de registo:

[HKEYLOCALMACHINE] \ SOFTWARE \ ODBC \ ODBCINST.INI \ SQL Server \ CPTimeout

(ou alguma variante, dependendo do seu sistema operacional e conta de usuário). Se o valor for 0, então o pool de conexão está desativado. Se é qualquer valor acima de 0, ele é habilitado.

Veja:

http://msdn.microsoft.com/en-us/library /ms810829.aspx

Eu não tenho certeza sobre como obter o número de conexões abertas. Apenas curioso: por que você precisa saber o número

Outras dicas

MSDN como diretrizes aprofundadas sobre este

Configuração Connection Pooling de Fonte Administrador de Dados

[snip]

Como alternativa, você pode iniciar o ODBC Administrador de fonte de dados no Run pronto. Na barra de tarefas, clique em Iniciar, clique em Executar e digite odbcad32.

A guia para o gerenciamento de conexão pooling é encontrado nos dados ODBC box Fonte Administrador de diálogo em versão ODBC 3.5 e posterior. Configurando o pool de conexões de Registro

Para versões anteriores à versão 3.5 do os principais componentes ODBC, você precisa modificar o registo directamente para controlar o pool de conexão valor CPTimeout.

Pooling é sempre tratado pelo software servidor de dados. O ponto de todo o ser é que em .NET que você não deveria ter que se preocupar com isso (por exemplo, é por isso que você deve sempre usar o SqlConnection ao trabalhar com SQL Server - parte dela é que ela permite que o pool de conexão) <. / p>

Atualização

No Vista, basta digitar "ODBC" no menu Iniciar e vai encontrar o aplicativo para você.

Atualização seguinte esclarecimento de OP

Em termos de determinar se o pool de conexão é habilitado em cada máquina, olhando para o diretrizes MSDN eu whould dizer que seria melhor melhor se você verificar os valores do Registro (consulte este artigo para indicações sobre o acesso ao registo).

TBH, porém, a menos que as máquinas clientes são realmente ruim, eu possivelmente não se incomodam mesmo .. AFAIK ele está habilitado por padrão e conexões de abertura em uma máquina cliente (na minha experiência) nunca foi um grande negócio. Ele só se torna realmente um grande negócio quando muitos estão sendo abertas.

Para determinar o número de conexões abertas em cada db, tente este sql - eu tenho-o de um documento na internet

select  db_name(dbid) , count(*) 'connections count'
  from master..sysprocesses
 where spid > 50 and spid  @@spid
 group by  db_name(dbid)
 order by count(*) desc

Spids <= 50 são usados ??por sqlserver. Assim, o SQL acima iria dizer-lhe a conexão usada por seus programas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top