Einzelnen Beitrag anzeigen

griesson

Registriert seit: 13. Okt 2004
3 Beiträge
 
#1

DTSRUN - Paket auf Server ausführen

  Alt 13. Okt 2004, 11:39
Hallo zusammen,

habe folgendes Problem: Ich starte aus meinem Delphi-Programm ein DTS-Paket und warte bis es beendet ist. Da ganze klappt auch mit der unten dargestellten Routine. Nur leider wird dass DTS-Paket dann auf dem Rechner ausgeführt, auf dem auch mein Delphi-Programm läuft. Gibt es eine Möglichkeit, das DTS-Paket aus dem Delphi-Programm heraus zu starten, aber zu sagen, dass es auf dem Server ablaufen soll, auf dem es auch gespeichert ist. Weiterhin wäre es noch wichtig auch weiterhin die Rückmeldung zu erhalten, wenn das Paket beendet wurde.

Die Ausführung des DTS-Paketes soll schließlich nicht die Ressourcen des lokalen PC in Anspruch nehmen, sondern vom Server selbst abgearbeitet werden.

Delphi-Quellcode:
function Tfrmmain.dts_run(dts:string): boolean;
var
  SEInfo: TShellExecuteInfo;
  ExitCode: DWORD;
  ExecuteFile, ParamString, StartInString: string;
  ok : boolean;
begin
  //DTS-Dienst auf Server
  ExecuteFile:='\\servername\pfad\dtsrun';

  FillChar(SEInfo, SizeOf(SEInfo), 0);
  SEInfo.cbSize := SizeOf(TShellExecuteInfo);
  with SEInfo do begin
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := Application.Handle;
    lpFile := PChar(ExecuteFile);
    //DTS-Paket (Parameter: /Server /User /Password /DTS-Paket)
    lpParameters := PChar(dts);
    nShow := SW_SHOWMINNOACTIVE;
  end;
  if ShellExecuteEx(@SEInfo) then
  begin
    frmmain.Enabled := false;
    repeat
      Application.ProcessMessages;
      GetExitCodeProcess(SEInfo.hProcess, ExitCode);
    until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
    //Warten bis Dienst beendet ist
    frmmain.Enabled := true;
    Application.BringToFront;
    ok := true;
  end
   else ok := false;

end;
  Mit Zitat antworten Zitat