Secuencia de Carga en DTS

19/12/2003 - 20:17 por pev | Informe spam
Hola a Todos:

Tengo un DTS que tiene varias tareas, unas predecesoras de
otras y obviamente, otras sucesoras de unas.

En general todas las tareas hacen la carga de archivos
planos a tablas de SQLServer.

Tenía un problema: El DTS se caía cuando algún archivo
venía vacio.
Esto lo solucione con la Secuencia de comandos ActiveX
Visual Basic siguiente:

Function Main()
Dim fso
Dim f

Set fso = CreateObject("Scripting.FileSystemObject")
IF (fso.FileExists("C:\PRUEBADTS\PRUEBADTS.txt")) THEN
Set f = fso.GetFile("C:\PRUEBADTS\PRUEBADTS.txt")
If (f.Size = 0) Then
Main = DTSStepScriptResult_DontExecuteTask
Else
Main = DTSStepScriptResult_ExecuteTask
End If
Else
Main = DTSStepScriptResult_DontExecuteTask
End If

End Function

*****************************************************
El problema que tengo ahora es que las tareas que son
sucesoras de esta, no las ejecuta y se da por terminada
la ejecución del DTS en forma correcta.
*****************************************************

*****************************************************
La Pregunta es que debo hacer para que las tareas
sucesoras de esta tarea se ejecuten aun cuando el
archivo por el que estoy preguntando venga vacio?
*****************************************************

Gracias.
Atte.
pev
 

Leer las respuestas

#1 pev
23/12/2003 - 13:31 | Informe spam
No me sirvio ninguna de las soluciones:
en un caso se sigue callendo como si leyera el archivo, y
en el otro caso, detiene la ejecucion de todas las tareas
siguientes y termina el DTS como si terminara con exito.


Alguna Idea para solucionar este problema..???

Atte.
pev

Hola:
Podrias utilizar las habilidades de Workflow de los


DTS's, generando que
Activex Script falle si no existe el archivo. En este


caso se brinca la
transformacion requerida. Algo como lo indicado en el


grafico. En este caso
cuando no existe el archivo o si hay 0 filas debes


generar un estado
DTSTaskExecResult_Failure.
Si siempre quieres hacerlo con la logica que tienes


debes cambiar el
estado no del Main sino de la tarea requerida, en vez de:
Main = DTSStepScriptResult_DontExecuteTask
Debes hacer algo como:
Dim Paquete


Set Paquete=DTSGlobalVariables.Parent
Paquete.Steps("NombrePaso").ExecutionStatus> DTSStepScriptResult_DontExecuteTask
Main= DTSTaskExecResult_Success
=>
Espero te sirva,


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.
pev escribio:
Hola a Todos:

Tengo un DTS que tiene varias tareas, unas predecesoras




de
otras y obviamente, otras sucesoras de unas.

En general todas las tareas hacen la carga de archivos
planos a tablas de SQLServer.

Tenía un problema: El DTS se caía cuando algún archivo
venía vacio.
Esto lo solucione con la Secuencia de comandos ActiveX
Visual Basic siguiente:

Function Main()
Dim fso
Dim f

Set fso = CreateObject("Scripting.FileSystemObject")
IF (fso.FileExists("C:\PRUEBADTS\PRUEBADTS.txt")) THEN
Set f = fso.GetFile("C:\PRUEBADTS\PRUEBADTS.txt")
If (f.Size = 0) Then
Main = DTSStepScriptResult_DontExecuteTask
Else
Main = DTSStepScriptResult_ExecuteTask
End If
Else
Main = DTSStepScriptResult_DontExecuteTask
End If

End Function

*****************************************************
El problema que tengo ahora es que las tareas que son
sucesoras de esta, no las ejecuta y se da por terminada
la ejecución del DTS en forma correcta.
*****************************************************

*****************************************************
La Pregunta es que debo hacer para que las tareas
sucesoras de esta tarea se ejecuten aun cuando el
archivo por el que estoy preguntando venga vacio?
*****************************************************

Gracias.
Atte.
pev





Preguntas similares