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.
>


Responder a