Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-01-2012
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 21
TiammatMX Va camino a la fama
El resultado de un Stored Procedure y los tiempos de Delphi.

Buena tarde, jóvenes.

Tengo un pequeño detallín con el resultado de un Stored Procedure, el cual tiene un tiempo de procesamiento de más de 15 minutos, un mundo de tiempo que el venerable Delphi 6 que estoy usando para desarrollar la aplicación con un TADOQuery que recoge ése resultado no alcanza a procesar; al grado que inicia el procesamiento de ése SP y la aplicación Delphi "cierra" la conexión, tira el servicio y no muestra el resultado en un reporte, que es la finalidad de ésta aplicación.

¿Alguna idea que me permita ejecutar el Stored Procedure HASTA QUE TERMINE y arroje el resultado deseado al reporte?
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #2  
Antiguo 04-01-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
jejeje... tenemos la bola de cristal averiada, a ver si los reyes magos nos trae una nueva

Mejor sería que nos dieras más datos, por ejemplo, la base de datos que usas, el código del store procedure, el código fuente delphi de cómo lo usas, la tabla o tablas que estás usando, datos adicionales que estimes oportuno para que podamos ayudarte.
Gracias.
Responder Con Cita
  #3  
Antiguo 05-01-2012
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 21
TiammatMX Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
jejeje... tenemos la bola de cristal averiada, a ver si los reyes magos nos trae una nueva ...
Cierto, perdón...

MS SQLServer 2008 R2, el código fuente del SP es ENORME, tanto que el editor de tópicos de ClubDelphi me lo acaba de rechazar.

Código Delphi del llamado:
Código Delphi [-]
 with Rprt.adoqryDtsRprt do
  begin
    Close;
    SQL.Clear; // 20111010 FEOL Se añade los nuevos parámetros.
    SQL.Add('SET DATEFORMAT DMY ' + #13 + #10 + DevuelveSP(IntToStr(iIdntfcdrRprt)) + ' ' +
      IntToStr(iIdntfcdrRprt) + ', ' + QuotedStr(DateToStr(dtetmepckrFchDsd.Date)) + ' , ' +
      QuotedStr(DateToStr(dtetmepckrFchHst.Date)) + ', ' + sDsgls + ', 0, 0,' + sPcntsEgrsds +
      ', 0, ' + sFechaPivote);
    wsNmbrArchv := SQL.Text;
    Open;
  end;

Si el Stored Procedure se corre por fuera de Delphi, tarda entre 25 y 35 minutos en arrojar resultados..., dentro de Delphi, simplemente nunca termina.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco

Última edición por ecfisa fecha: 05-01-2012 a las 21:05:17. Razón: Corregir problema de etiquetas con Interfaz Mejorada WYSIWYG
Responder Con Cita
  #4  
Antiguo 05-01-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Pues si no podemos mirar nada

Verifica que tienes índices en los campos involucrados, aunque lo que yo haría es usar el "divide y vencerás"
Empieza a "recortar" la sql y ve probando que vaya rápido, si va bien entonces añades algo más y pruebas... y así poco a poco hasta que llegues al "culpable".
Responder Con Cita
  #5  
Antiguo 05-01-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
No veo el código. Deberás ponerlo entre[ delphi ] y [ /delphi ].

Parece que es:
Código Delphi [-]
with Rprt.adoqryDtsRprt do 
begin 
  Close; 
  SQL.Clear; 
  // 20111010 FEOL Se añade los nuevos parámetros. 
  SQL.Add('SET DATEFORMAT DMY ' + #13 + #10 + 
    DevuelveSP(IntToStr(iIdntfcdrRprt))+' '+ 
    IntToStr(iIdntfcdrRprt)+', '+ 
    QuotedStr(DateToStr(dtetmepckrFchDsd.Date))+', '+ 
    QuotedStr(DateToStr(dtetmepckrFchHst.Date))+', '+ 
    sDsgls+', 0, 0,'+
    sPcntsEgrsds+', 0, '+ 
    sFechaPivote); 
  wsNmbrArchv := SQL.Text; 
  Open; 
end;
  • Tu problema puede ser que la transacción tenga un tiempo de timeout "pequeño" para tu requerimiento. (Mira ADOQuery.CommandTimeOut)
  • También puede ser que otra transacción colisione con la del listado y genere un error.
  • Puede ser también que la cantidad de líneas que devuelve el procedimiento sean demasiadas. Prueba a poner el AdoQuery.CursorLocation = clUseServer.
Responder Con Cita
  #6  
Antiguo 05-01-2012
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 21
TiammatMX Va camino a la fama
Cita:
Empezado por duilioisola Ver Mensaje
  • Tu problema puede ser que la transacción tenga un tiempo de timeout "pequeño" para tu requerimiento. (Mira ADOQuery.CommandTimeOut)
TimeOut a 0, o sea, a infinito. Por ese lado, descartamos el problema.

Cita:
Empezado por duilioisola Ver Mensaje
  • También puede ser que otra transacción colisione con la del listado y genere un error.
No uso transacciones, son SP's que sólo producen datos.

Cita:
Empezado por duilioisola Ver Mensaje
  • Puede ser también que la cantidad de líneas que devuelve el procedimiento sean demasiadas. Prueba a poner el AdoQuery.CursorLocation = clUseServer.
Devuelve solamente 88 filas, el más largo de ellos.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #7  
Antiguo 05-01-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Estimado Colega, sin ánimo de ofender, sinceramente pienso que un Stored Procedure que dure casi media hora es inaceptable. A cómo ha comentado Casimiro arriba, es mejor que busques como optimizar el tiempo de respuesta de ése procedimiento. Tienes que hacer un análisis exhaustivo de él y ver que índices son necesarios para mejorar su rendiemiento y además debes fijarte que las clausulas SQL sean las óptimas.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
crear Stored Procedure desde delphi Milperrimo Firebird e Interbase 4 03-02-2008 18:52:53
stored procedure con mysql y delphi 7 didier Internet 2 13-10-2006 03:36:38
Ver los Stored Procedure tgsistemas SQL 0 06-04-2004 17:18:22
Stored Procedure tgsistemas SQL 1 27-02-2004 13:10:33
Ver resultado de un Stored Procedure desde Delphi ElCherchu Conexión con bases de datos 6 10-06-2003 09:51:55


La franja horaria es GMT +2. Ahora son las 22:45:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi