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.