Dificuldade com SQL Server

04/06/2008

1

Bom dia a todos, tenho uma aplicação que já funciona em Oracle e MySQL porém recentemente estou fazendo as adaptações necessárias para trabalhar com o SQL Server e acabei me deparado com o seguinte erro:

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

Fazendo uma pesquisa me deparei com uma solução que até então estava resolvendo esse problema

´SQLConnection.CloseDataSets;´ no BeforeApplyUpdates dos CDs.

Porém em determinada aplicação isso não resolve, mesmo com esse comando continuo recebendo o mesmo erro, alguém sabe como resolver esse problema pelo Delphi? Ou quem sabe pelo próprio SQL Server alterando o total de transações permitidas?
Gostaria de saber também se é necessário algo a mais além de um ´Close´, seja em um SQLQuery ou ClientDataSet para encerrar essa transação com o banco, se alguém puder me ajudar desde já agradeço.


Responder

Posts

04/06/2008

Du_nirvana

Alguma idéia??


Responder
você usa dbExpresss, assim como eu.
e eu só consegui resolver esse problema utilizando o driver para SQLServer da [url=http://crlab.com/dbx/]CoreLab[/url]. o driver da Borland não funciona.

veja no site


Responder

04/06/2008

Du_nirvana

O problema são os $500, alguma alternativa?


Responder

05/06/2008

Du_nirvana

Recebi uma resposta hoje de um fórum sobre sql server onde uma pessoa me orientou a contruir um log do sql server para verificar se haviam transações pendentes, de fato no lado do banco não havia problemas o que de uma vez por todas nos indica que de fato o problema é com o driver nativo do dbExpress.

[url]http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=3446695&SiteID=21&mode=1[/url]


Responder

05/06/2008

Edsant

Eu uso os componentes da palette DbGo e não tenho esse tipo de problemas...


Responder

05/06/2008

Macario

Olá.

Por curiosidade com quantas transações você pretente ou precisa trabalhar simultaneamente?
:roll:


Responder

04/07/2008

Du_nirvana

Bom dia senhores, resolvi reativar esse post pois recentemente obtive sucesso em relação a esse problema. Depois de receber a resposta do forum sobre sql server decidi deixar o dbExpress de lado, ao menos para essa aplicação, partindo para o ADO. Depois de algumas adaptações obtive o mesmo problema logo percebi que ou sql server estava com alguma limitação ou havia algum erro em meu sistema. Pois bem, mexendo um pouco mais no ´Microsoft SQL Server Management Studio Express´, descobri uma aplicação que foi o inicio da solução do meu problema o ´Activity Monitor´. Neste programa comecei a monitorar minha aplicação e percebi que ao acessar meu sistema vários processos eram abertos, até que em determinado momento eu recebia o erro referido. Pesquisando em meu proprio sistema encontrei a seguinte situação:

  
  TRY
    Qry_calc.SQL.Text := ´SELECT (´+ v_formulafinal+´) RESULTADO ´;
    Qry_calc.Open;
    result := Qry_calc.FieldByName(´RESULTADO´).AsFloat;
    Qry_calc.Close;
    FreeAndNil(Qry_calc);
  EXCEPT
    Qry_calc.Close;
    FreeAndNil(Qry_calc);
    result := 0;
  END;


Essa consulta esta num bloco TRY porque o SELECT pode gerar um erro, porém quando esse erro ocorre o objeto que gera esse processo no SQL SERVER não e destruido e como eu executava essa rotina varias vezes, os processos se acumulavam, a solução foi fazer com que esse SELECT não gerasse erro no banco, logo tudo ficou normal e eu voltei a usar somente o dbExpress.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira