como saber si un procedimiento termino

17/08/2004 - 11:42 por reo | Informe spam
1.- tengo un procedimiento que se ejecuta y crea varios ficheros de texto
segun contenido de varias tablas.
los fichero se crean con exec master.dbo.sp_OAMethod @object,
'CreateTextFile' y el contenido con
exec master.dbo.sp_OAMethod @a, 'write'.
Son unos 84 ficheros.
2.- tengo otro procedimiento que comprueba la existencia de esos ficheros
para realizar una tarea.
para comprobar la existencia lo hago con el procedimiento xp_fileexist

ejecuto el primero y devuelve el control , entonces empiezo con el segundo.

pero el segundo me dice que bastantes de esos ficheros no se han creado,
aunque si miro fisicamente si estan creados.

he puesto trazas y resulta que el primero cuando todavia no ha terminado de
crear ficheros devuleve el control para empezar el segundo
entonces al comprobar la existencia , claramente todavia no se han creado.

como puedo solucionar esto?
existe algun metodo para saber cuando se termina de crear o rellenar con
datos un fichero?
existe algun metodo para saber que realmente termino un procedimiento?

muchas gracias

Preguntas similare

Leer las respuestas

#1 Isaías
17/08/2004 - 18:10 | Informe spam
Reo

No creo que exista forma de comprobar que ha finalizado la
creacion de tus ficheros, pero podrias darle un DELAY a la
ejecucion del segundo store con un:

WAITFOR DELAY '00:00:02'
Respuesta Responder a este mensaje
#2 Javier Loria
17/08/2004 - 18:38 | Informe spam
Hola:
Hasta donde se sp_OAMethod no es asincronico, por lo que asumo es
propiamente el procedimiento (CreateTextFile, Write) los que son
asincronicos. El SQL no puede hacer nada para controlar estos
procedimientos.
Se me ocurren 4 alternativas:
a) Quitarle la parte asincrionica a los metodos y hacerlos sincronicos.
(Puede producir problemas de desempeno).
b) Que Write utilice una "bandera": o sea un mensaje para indicar que ya
termino, puede ser agregando un linea en un archivo o agregando un archivo
de cabezera. El procedimiento revisa si esta agregado y luego corre.
c) Hacer un Ciclo que espere a que todos los archivos existan y luego
continue.
d) Hacer un WAITFOR con suficiente tiempo para que los archivos se
graben.

Ninguna de las alternativas me gusta :(
En todo caso este tipo de soluciones produce muchos dolores de cabeza
ya que SQL no esta disenado para esto, si fuera posible hacerlo en el
cliente, seria mi primera opcion.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"reo" wrote in message
news:
1.- tengo un procedimiento que se ejecuta y crea varios ficheros de texto
segun contenido de varias tablas.
los fichero se crean con exec master.dbo.sp_OAMethod @object,
'CreateTextFile' y el contenido con
exec master.dbo.sp_OAMethod @a, 'write'.
Son unos 84 ficheros.
2.- tengo otro procedimiento que comprueba la existencia de esos ficheros
para realizar una tarea.
para comprobar la existencia lo hago con el procedimiento xp_fileexist

ejecuto el primero y devuelve el control , entonces empiezo con el


segundo.

pero el segundo me dice que bastantes de esos ficheros no se han creado,
aunque si miro fisicamente si estan creados.

he puesto trazas y resulta que el primero cuando todavia no ha terminado


de
crear ficheros devuleve el control para empezar el segundo
entonces al comprobar la existencia , claramente todavia no se han creado.

como puedo solucionar esto?
existe algun metodo para saber cuando se termina de crear o rellenar con
datos un fichero?
existe algun metodo para saber que realmente termino un procedimiento?

muchas gracias


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida