Pergunta

Estou trabalhando no projeto de outra pessoa que faz uso pesado de tableadapters. O site funciona, mas regularmente adiciona uma entrada no log de eventos:

"O ExecuteReader requer uma conexão aberta e disponível. O estado atual da conexão está se conectando."

O site não faz uma exceção, a menos que haja tráfego alto (mais de 5 solicitações por segundo), a exceção é a mesma, apontando para essa linha de código:

this.Adapter.Fill(dataTable);

Stack Trace: em system.data.sqlclient.sqlConnection.getOpenconnection (método String) em system.data.sqlclient.sqlConnection.validateConnectionForexecute (método String, comando sqlCommand)

Como posso parar esse erro? Obrigado.

Acontece que eu estava recebendo apenas metade da foto, o erro, quando isso lançaria um erro é:

"Já existe um DataReader aberto associado a este comando que deve ser fechado primeiro".

Foi útil?

Solução

Eu diria que você provavelmente está usando a mesma conexão para vários propósitos e um deles está sendo fechado por outro tópico.

Eu recomendo adicionar algum rastreamento para descobrir o que está acontecendo. É difícil depurar esse tipo de erro, aqueles que você só recebe quando em produção :(

Outras dicas

Se parece que você excedeu o número permitido de conexões abertas ao seu banco de dados. Isso pode ser definido na string de conexão, fornecendo valores para o tamanho do pool min e os valores máximos do tamanho do pool. Eu acho que os padrões são 0 para o tamanho da piscina Min e 100 para o tamanho máximo da piscina, mas não tenho certeza.

Tente alterá -los e veja se isso ajuda.

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