A primeira coisa q voce tem q saber é de onde vem a mensagem: do componente ADOConnection ou do Sql Server.
Se for do ADO: No componente ADOConnection tem a propriedade ConnectionTime -> set para 1000 Nos componente TADOquery e TADOStoredProc tem a propriedade CommandTime -> set para 1000 Se for do Sql Server: Você tem q analisar a performance de todos os seus comandos através do Profile. Pode ser comandos mal projetados T+ Mani --- Em delphi-br@yahoogrupos.com.br, "Marcelo Alves" <[EMAIL PROTECTED]> escreveu > > Pessoal, > > Estou com uma bucha aqui pra resolver e preciso muito da ajuda do > grupo... vamos lá.. > > No cliente onde trabalho, faço manutenção num sistema feito em D7 com > Sql Server 2000. > > De uns dias pra cá, o sistema começou a dar timeout com bastante > frequência e quando acontecia isso o DBA verificava via scripts que > existia um processo bloqueando outro no sql server. > > Bom, quais foram meus passos para tentar descobrir qual é o problema > até agora: > > 1 - revisei as principais rotinas que sempre travam e também as > maiores e mais demoradas... num achei nenhum problema, mesmo porque > essas rotinas sempre funcionaram muito bem. O Sistema já está em > produção a mais ou menos 1 ano. > > 2 - estou revisando alguns códigos de acordo com alguns toques que > recebi de uma pessoa de uma outra empresa que integra o sistema deles > com o nosso, e que manja muito de sql server. Bom ele pediu para eu > revisar os momentos em que abro transações no servidor.. > > Bom, tirei todas as aberturas de transação quando ao chamar > procedures que fazem somente selects... e mantive somente nos > momentos em que preciso alterar mais de uma tabela para garantir a > integridade dos dados... > > Bom, nesse lugares que mantive as abertura de transações, o código > fica assim: > > > If adoSistema.InTransaction Then > adoSistema.RollBackTrans ; > > adoSistema.BeginTrans; > > self.spGeral.Close ; > Self.spGeral.ProcedureName := 'NOME_PROCEDURE_01' ; > self.spGeral.Parameters.Refresh; > > //PASSO TODOS OS PARÂMETROS DA PROCEDURE 01 > > //Executa a SP > Self.spGeral.ExecProc ; > > self.spGeral.Close ; > Self.spGeral.ProcedureName := 'NOME_PROCEDURE_02' ; > self.spGeral.Parameters.Refresh; > > //PASSO TODOS OS PARÂMETROS DA PROCEDURE 02 > > //Executa a SP > Self.spGeral.ExecProc ; > > //Grava os Dados no bd > adoSistema.CommitTrans ; > > Até aí vocês viram algum erro???? > > Bom, outra coisa, eu estive olhando algumas propriedades do > TADOConection e gostaria de saber como vocês configuram para comparar > com as minhas aqui... > > E nos casos de selects onde eu porderia usar tabelas temporárias.. > existe alguma propriedade que faça com que meu componente adoQuery > traga os dados sem bloquear a tabela??? Pois tenho casos onde a query > fica aberta durante processos demorados e acho que isso está gerando > travamento no banco... > > A minha maior dúvida é o que fazer para evitar esses travamentos no > banco... > > Se puderem me ajudar ficarei muito grato... > > Marcelo. >