Ejecutar DTS

Tengo una aplicación en delphi7, que conecta con base datos SQL Server, y necesito lanzar un paquete DTS que esta en SQL. ¿Cómo hacerlo? ¿Se puede?

1 respuesta

Respuesta
1
function TMainForm.ExecCmdLineAndWait(const CmdLine: string;WindowState: Word;Wait: Boolean): Boolean;
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
FillChar(SUInfo, SizeOf(SUInfo), #0);
with SUInfo do
begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := WindowState;
end;
Result := CreateProcess(nil, PChar(CmdLine), nil, nil, False,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS, nil,
nil {PChar(ExtractFilePath(Filename))},
SUInfo, ProcInfo);
{ Esperar hasta que termine. }
if Wait and Result then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;
y asi seria como ejecutar este metodo:
ExecCmdLineAndWait(Ruta + 'DTS\dtsrun' + ' /f '+ Ruta +'DTS\' + NombreDts + '.dts /n ' + NombreDts,SW_HIDE, True);
Hola GaunManuel
Podrías aclararme algo el código, el paquete esta guardado en:Servicios de tranformacion/paquetes locales de sql.
Muchas Gracias
Hola gaun
Aunque me gustaría que me aclararas el código, creo que ya comprendo algo, el modificador /f es para un fichero y no para un paquete que esta guardado directamente en paquetes locales, he utilizado el modificador /s y el /v para indicarle que esta en el servidor y la version que quiero ejecutar.
Muchísimas gracias.
Hola gaun
Como te comentaba, conseguí que funcionara el código, pero ahora me encuentro con otro problema, los equipos que van a ejecutar el programa no tienen instalado sql server y no me funciona el código.
¿Qué debo cambiar en el código o que debo actualizar en los equipos, sin instalar SQL Server?
Gracias
Ah pues el detalle esta en eso, en que yo ejecuto el archivo al especificar /f y por eso puedo ejecutarlo desde cualquier maquina, en cuanto a lo tuyo nunca he podido ejecutarlos así.
Es con lo que puedo ayudarte.
Perdona mi insistencia gaun
ExecCmdLineAndWait(Ruta1 + 'DTS\dtsrun' + ' /f '+ Ruta2 +'DTS\' + NombreDts1 + '.dts /n ' + NombreDts2,SW_HIDE, True)
pero podrias decirme
ruta1=
ruta2=
nombredts1=
nombredts2=
Que habría que poner en cada uno de los valores anteriores que lleva el EXECMD
Gracias
Ah ok.
Ruta1 + 'DTS'\dtsrun : esto se refiere a donde se encuentra un executable el cual es proporcionado por SQL Server, buscalo en tu maquina dtsrun.exe
Luego : /f: indica que es ejecución de archivo.
Luego Ruta2+'DTS\'+NombreDts1.dts, es la ruta y nombre donde se encuentra tu DTS
Luego /n: es no se exactamente para que pero es un atributo que necesita.
Luego va de nuevo el nombre del DTS sin extensión. Ejemplo
ExecCmdLineAndWait('c:\Program Files\DTS\dtsrun.exe /f c:\miDTS\ArchivoDTS.dts /n ArchivoDTS, SW_HIDE, True);

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas