Como posso saber quantas conexões SQL eu abri em um serviço do windows?

Estou vendo alguns erros que indicam um "vazamento de conexão". Ou seja, conexões que não foram fechadas corretamente e o pool está se esgotando. Então, como vou instrumentar isso para ver exatamente quantos estão abertos em um determinado momento?

0
adicionado editado
Visualizações: 1

7 Respostas

Use a instrução "using" para garantir que suas conexões estejam sempre fechadas e você nunca mais terá esse problema:

using(SqlConnection connection = new SqlConnection())
{
...
}//connection is always disposed (i.e. closed) here, even if an exception is thrown
0
adicionado

Se você estiver usando o .net, há o provedor de dados .net para o SQL server no PerfMon. Você pode olhar para NumberOfPooledConnections lá

0
adicionado

sp_who2 procedimento armazenado na tabela mestre é bom para isso de um lado do banco de dados. Ele mostrará as conexões com o banco de dados. Se você está procurando mais dados, tente criar um perfil também.

0
adicionado

Implemente um serviço em que todas as conexões são criadas, abertas e fechadas. Segure um contador lá. Registre com sua estrutura de log toda vez que uma conexão é aberta ou fechada.

0
adicionado

você pode usar a ferramenta de criação de perfil para rastrear todas as conexões existentes e de abertura e fechamento

Você pode abrir o profiler do gerenciador de empresas

0
adicionado

Se você estiver usando o SQL 2000, você pode verificar no SQL 2000 Enterprise Manager:

Para exibir a janela Atividade atual em   SQL Server Enterprise Manager, expanda   um grupo de servidores e, em seguida, expanda   servidor. Expanda Gerenciamento e, em seguida,   expanda Atividade atual. Clique em processo   Info.

     

A atividade atual do servidor é   exibido no painel de detalhes.

( http://technet.microsoft.com/pt-br/library/cc738560 .aspx

(Da pesquisa do Google: atividade atual do sql 2000)

0
adicionado

Você pode executar sp_who2 no SQL Server Management Studio ou no Query Analyzer para ver todas as suas conexões curent. Isso é o SQL Server. Não tenho certeza de qual RDBMS você está usando.

Além disso, procure em seu código e certifique-se de fechar uma conexão assim que não precisar mais dela. Seja anal sobre isso!

0
adicionado