CORRECÇÃO: Anulação de thread durante SqlCommand.ExecuteReader corrompe SqlConnection pool

Traduções deste artigo Traduções deste artigo
ID do artigo: 319345 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Sintomas

Se as seguintes condições forem verdadeiras:
  • Uma consulta longa que usa o método SqlClient.SqlCommand.ExecuteReader em um aplicativo multithread do .NET foi anulada.
  • Segmentos, daí em diante, use a mesma seqüência de conexão para tentar ler dados usando SqlClient.SqlCommand.ExecuteReader .
você receber a seguinte mensagem de erro:
System.InvalidOperationException: Há já um DataReader aberto associado a esta conexão que deve ser fechado primeiro.
A pilha de chamadas pode aparecer da seguinte maneira:
at System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean executing)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
   at System.Data.SqlClient.SqlCommand.ExecuteReader()
					

Causa

Quando o thread que interage com o objeto DataReader é interrompido, a conexão não pode ser limpada corretamente porque o método SqlClient.SqlConnection.Close que contém o código de limpeza não é chamado. Isso deixa a conexão em um estado indeterminado e, eventualmente, faz com que o pool de conexão inserir um estado inutilizável.

Resolução

Para resolver esse problema, obtenha o service pack mais recente para o Microsoft .NET Framework. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
318836Como obter o service pack mais recente do .NET Framework
A versão em inglês dessa correção deve ter os seguintes atributos de arquivo ou posteriores:
   Date            Version                                 Size              File name     
   --------------------------------------------------------------------
   05-Mar-2002     1.0.3705.211    1,175,552 bytes   System.data.dll
   29-Jan-2002                                  1,831,936 bytes   NDP10U318609.msp
				

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi corrigido primeiro no Microsoft .NET Framework Service Pack 2 (SP2).

Propriedades

ID do artigo: 319345 - Última revisão: quinta-feira, 24 de outubro de 2013 - Revisão: 5.1
A informação contida neste artigo aplica-se a:
  • Microsoft ADO.NET 1.0
Palavras-chave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbnetframe100presp2fix kbnetframe100sp2fix KB319345 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 319345

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com