problema SQL2005 estranho. “SqlConnection não suporta transações paralelas”

StackOverflow https://stackoverflow.com/questions/407320

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu tenho um problema que parece ser o resultado de um de um impasse-situação. Whe estão agora procurando a raiz do problema, mas enquanto isso queríamos para reiniciar o servidor e obter o cliente vai.

E agora toda vez que nós iniciar o programa apenas diz "SqlConnection não suporta transações paralelas". Nós não mudamos nada no programa, o seu compilado e no servidor de clientes, mas depois da -situation "possível impasse" que quer ir online novamente.

Temos 7 clientes (computadores) executar o programa, cada cliente está falando com um webservice em um servidor local, e o webservice está conversando com o sql-server (mesma máquina como servidor web).

Temos reiniciado tanto o sql-servidor eo IIS-servidor, mas não reiniciado o servidor por causa de outros importantes serviços em execução no servidor para sua a última coisa que fazemos. Podemos si sem bloqueios ou qualquer coisa no separador de gestão.

Então, minha pergunta é, por que o "SqlConnection não suporta transações paralelas" erro vindo de uma hora para outra sem mudar nada no programa e ainda vive entre sql-restart.

Parece que isso acontece na primeira db-request o programa faz quando começar.

Se precisar de mais informações basta perguntar. Im confuso ...

Mais informações: Eu não acho que eu tenho transações "long" em execução. O cenário é muitas vezes que tenho um conjunto de dados com 20-100 linhas (ContractRows) em que vou fazer um .Update no TableAdapter. Eu também laço Throug essas 20-100 linhas e para alguns deles Ill criar anúncios de gancho-SQL-querys (por exemplo, se um produto alugado é marcado como retornado eu criar uma consulta SQL para marcar o produto como retornado no banco de dados)

Então eu faço isso muito simplificada:

Create objTransactionObject
Create objtableadapter (objTransactionObject)
for each row in contractDS.contractrows
  if row.isreturned then
    strSQL &= "update product set instock=1 where prodid=" & row.productid & vbcrlf
 End if
next
objtableadapter.update(contractDS)
objData.ExecuteQuery(strSQL, objTransactionObject)    
if succsesfull 
  objtransactionobject.commit
else
  objtransactionobject.rollback
end if
objTran.Dispose()

E então estou fazendo confirmação ou reversão dependendo se Correu tudo bem ou não.

Edit:. Nenhuma das respostas ter resolvido o problema, mas eu vou agradecer os ponteiros de tiro boa problemas

O "SqlConnection não suporta transações paralelas" dissapeared repente e agora o sql-server apenas "desce" 4-5 vezes por dia, eu acho que é um impasse que faz isso, mas eu não ter o conhecimento certo para descobrir e é curto no sql-especialistas que podem monitorar isso para mim no momento. Eu só reiniciar o sql-server e tudo funciona novamente. 1 de 10 vezes eu também tenho que reiniciar o computador. Sua realmente me (e meus clientes, é claro) incomodando.

Qualquer um conhecer uma pessoa com boa conhecimento na análise de problemas com bloqueios ou outros problemas SQL na Suécia (ou em todo o mundo, falar em Inglês) está livre para contactar-me. Eu sei que isto is'nt um local de contato, mas eu levo o meu chanse de fazer a pergunta, porque eu tenho que correr fora das opções, passei 3 dias e noites otimizando os clientes para ter certeza de que ligações estreitas e não fazer coisas muito estúpidas lá . Sem sorte.

Foi útil?

Solução

Parece ser que você está compartilhando conexões e criar novas transações na mesma conexão aberta (esta é a parte paralela da exceção que você está vendo).

O seu exemplo parece apoiar este como você não tem nenhuma menção de como você adquirir a conexão nele.

Você deve fazer uma revisão do seu código e certifique-se que você só está abrindo uma conexão e, em seguida, descartá-lo quando estiver pronto (e por todos os meios, use a instrução usando para se certificar de que você fechar a conexão), como parece que você está deixando um em algum lugar aberto.

Outras dicas

O seu não parece ser um problema incomum. Google encontrou um monte de hits quando eu colado sua seqüência de erro na caixa de consulta.

Leitura respostas anteriores, parece que ele tem algo a ver com intercalação transações indevidamente ou nível de isolamento.

Quanto tempo conexões mantidas abertas? Você tem transações em execução tempo?

Você tem transações implícitas ligado em algum lugar, de modo que existem algumas operações em que você não lhes teria esperados? Você já abriu Activity Monitor para ver se existem quaisquer transações inesperadas?

Você já tentou fazer um backup do seu log de transações? Isso pode limpá-lo bem, se eu me lembro de uma experiência anterior, similar corretamente.

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