Socorro - Timeout - ADO / SQL Server 2000
16/10/2003
0
Estou tendo problemas com o timeout. não consigo aumenta-lo, mesmo aumentando o ConnectionTimeout e o CommandTimeout, o limite de resposta na tela permanece de 1 minuto. Eu estou usando o seguinte codigo:
CREATE PROCEDURE SP_AtualizaHistorico
AS
INSERT INTO Historico(PesCod, PlaCod, CurCod, CurDat, Contato, Assunto)
SELECT DISTINCT E.PesCod, P.PlaCod, P.PlaCodRef, P.PlaDat, PP.ConCod, PP.PlaPesObs
FROM Pessoa as E INNER JOIN Planejamento_Pessoa as PP
on E.PesCod = PP.PesCod INNER JOIN Planejamento as P
on P.PlaCod = PP.PlaCod
WHERE NOT EXISTS (SELECT * FROM Historico
WHERE PesCod = E.PesCod and PlaCod = P.PlaCod)
GO
Obrigado !
CREATE PROCEDURE SP_AtualizaHistorico
AS
INSERT INTO Historico(PesCod, PlaCod, CurCod, CurDat, Contato, Assunto)
SELECT DISTINCT E.PesCod, P.PlaCod, P.PlaCodRef, P.PlaDat, PP.ConCod, PP.PlaPesObs
FROM Pessoa as E INNER JOIN Planejamento_Pessoa as PP
on E.PesCod = PP.PesCod INNER JOIN Planejamento as P
on P.PlaCod = PP.PlaCod
WHERE NOT EXISTS (SELECT * FROM Historico
WHERE PesCod = E.PesCod and PlaCod = P.PlaCod)
GO
Obrigado !
Gilcosme
Curtir tópico
+ 0
Responder
Posts
19/05/2004
Tathianam
Olá Amigos!
Eu também estava me matando de tentar solucionar essa questão então achei uma solução para Delphi e decidi compartilhar com vocês.
Primeiro (sem sucesso) tentei configurar o servidor SQL para que não utilizasse o timeout, através da propriedade ´Query Governor´. Fiz a seguinte função (query com execsql):
USE banco_de_dados_sql EXEC sp_configure ´+chr(39)+´QUERY_GOVERNOR_COST_LIMIT´+chr(39)+´, ´+chr(39)+´999999´+chr(39)+ ´ RECONFIGURE WITH OVERRIDE
Porém ainda não sabia que o ADO tinha alguns problemas em relação ao tempo limite excedido, e por mais que eu aumentasse esse valor 999999 ainda assim dava a mensagem.
Então achei a solução definitiva: setar manualmente o timeout das SPs e Querys do meu formulário.
Resolução em Delphi (coloquei esta função em uma unit de sistema):
Aí no form show bastou colocar a seguinte instrução:
É isso aí pessoal, se alguém souber de outra alternativa compartilhe também...!!!
Eu também estava me matando de tentar solucionar essa questão então achei uma solução para Delphi e decidi compartilhar com vocês.
Primeiro (sem sucesso) tentei configurar o servidor SQL para que não utilizasse o timeout, através da propriedade ´Query Governor´. Fiz a seguinte função (query com execsql):
USE banco_de_dados_sql EXEC sp_configure ´+chr(39)+´QUERY_GOVERNOR_COST_LIMIT´+chr(39)+´, ´+chr(39)+´999999´+chr(39)+ ´ RECONFIGURE WITH OVERRIDE
Porém ainda não sabia que o ADO tinha alguns problemas em relação ao tempo limite excedido, e por mais que eu aumentasse esse valor 999999 ainda assim dava a mensagem.
Então achei a solução definitiva: setar manualmente o timeout das SPs e Querys do meu formulário.
Resolução em Delphi (coloquei esta função em uma unit de sistema):
type
TFriendDS = class(TCustomADODataSet);
procedure ResolveTimeOut(xForm:TForm);
var I: integer;
begin
with xForm do
begin
for I := 0 to ComponentCount - 1 do
if (Components[I] is TADOStoredProc) or (Components[I] is TADOQuery) then
TFriendDS(Components[I]).CommandTimeout := 999999;
end;
end;
Aí no form show bastou colocar a seguinte instrução:
ResolveTimeOut(self);
É isso aí pessoal, se alguém souber de outra alternativa compartilhe também...!!!
Responder
Clique aqui para fazer login e interagir na Comunidade :)