Está descartando o objeto de conexão corretamente após cada chamada? Pode ser possível que o pool de conexões esteja sendo preenchido e impedindo outras conexões.
Eu tenho escrito algum código de teste para um programa que estou desenvolvendo. Alguns dos meus códigos executam operações que modificam dados em um SQL Server. Para evitar sobrecarregar meu banco de dados com dados de teste, uso transações. Eu corro cada teste dentro de uma transação e, em seguida, reverter a transação.
No entanto, quando executo meu código de teste, ele lança esporadicamente a exceção de que não pôde conectar-se ao SQL Server. Pior ainda, parece que, às vezes, as transações simplesmente flutuam no éter, bloqueando as tabelas no meu banco de dados para que os usuários comuns não possam se conectar. (Este é um banco de dados do ambiente de desenvolvimento, mas mesmo assim, é um grande incômodo).
Meus testes são divididos em cerca de 100 testes; cada teste é executado em sua própria transação; os testes são executados em seqüência (ou pelo menos eu acho que eles deveriam: - /).
Se eu executar os testes um de cada vez, eles sempre passam. Eu só tenho problemas ao executar todos os 100 testes de uma só vez no Visual Studio 2008. Cada teste é executado muito rapidamente, então eu acho que o problema tem algo a ver com o SQL Server não poder limpar a conexão de um teste anterior e fazer disponível uma nova conexão.
Há algum ajuste na minha configuração do SQL Server que possa remediar esse problema?
Tags sql sql-server