quarta-feira, 3 de junho de 2009

SQL Server - "não é possivel criar uma nova transação porque a capacidade foi excedida"

Como expliquei anteriormente, quando usamos componentes para conectar o Delphi com algum banco de dados, devemos deixar todos os componentes desconectados e só conecta-los quando for executar alguma transação, isso sempre funcionou comigo usando firebird, mas quando fui usar o delphi com SQL Server, mesmo deixando todos eles desconectados, me deparei com o seguinte erro:

não é possível criar uma nova transação porque a capacidade foi excedida

Fiz de tudo para funcionar e nada, já estava ficando louco quando descobri o seguinte evento do ClientDataSet

BeforeApplyUpdates

Foi o que salvou minha vida (pelo menos até o presente momento), selecionei todos os meus ClientDataSet e nesse evento coloquei o comando:

SQLConnection1.CloseDataSets;

Ou seja, depois que ele efetua qualquer transação com o banco, ele fecha o dataSet, eu tinha feito isso manualmente no fechamento de cada form, mas não foi suficiente, agora com esse evento tudo está funcionando.
Então fica ai a dica pra quem estiver com o mesmo problema.
Até mais;

10 comentários:

  1. E eu estava ficando louca junto..rs


    Bjs...

    Gabi

    ResponderExcluir
  2. Eu também perdi uns 500 fios de cabelo com isso!!!!!

    Valeu a dica!

    ResponderExcluir
  3. Cara, muito obrigado este erro tb estava me deixando louco.

    ResponderExcluir
  4. Obrigada! Serviu pra mim tb.

    ResponderExcluir
  5. Cara D++
    Me ajudou muito estava com esse erro com o Dlphi XE + sql server 2008

    Vlwss

    ResponderExcluir
  6. Pessoal,

    estou com o mesmo problema com o Delphi 7, já efetuei o esquema informado acima, porem comigo acontece quando tento abrir uma transação no (StartTransaction), alguma dica, por favor.

    ResponderExcluir
  7. Obrigado pela dica.
    Eu utilizo o DBExpress.
    Resolvi o problema assim: Antes de startar uma nova transação, eu fecho e abro novamente o componente TSQLConnection. Funcionou perfeitamente.

    ResponderExcluir