![]() |
Anwendung reagiert während ausführen von SSIS Paket nicht
Hallo Zusammen!
Ich erstelle im Moment eine Anwendung die verschiedene Datenaufbereitungsjobs erledigt und anschließend die erstellten Daten per DTS auf einen anderen MSSQL Server überträgt. Soweit so gut! Um die einzelnen Schritte für den Nutzer zu veranschaulichen werden aktueller Status und Ergebnisse in einem Grid ausgegeben. Leider reagiert während der Übertragung meine Hauptanwendung gar nicht mehr. Hab mir überlegt das ganze mit Threads zu realiseren allerdings steh ich im Moment irgendwie im Wald und hab keine Ahnung wie ich anfangen soll. Hat jemand ne Idee oder nen Ansatz?
Code:
uses DTSLib_TLB;
. . function DoSSISPackage(DTSXFile: string):DTSExecResult; var pkg : IDTSPackage90; app : TApplication; pkg_result : DTSExecResult; begin app := TApplication.Create(nil); pkg := app.LoadPackage(DTSXFile, True, nil); pkg_result := pkg.Execute_; app.Free; result := pkg_result; end; |
Re: Anwendung reagiert während ausführen von SSIS Paket nich
ich bin mir nicht sicher, aber versuch es mal mit:
Application.ProcessMessages; |
Re: Anwendung reagiert während ausführen von SSIS Paket nich
Naja ganz so einfach ist es nicht!
Application.ProcessMessages würde mir was bringen wenn ich die Funktion z.B. in einer Schleife ausführen würde. Das ausführen des Paketes ansich dauert ca. 10 Minuten |
Re: Anwendung reagiert während ausführen von SSIS Paket nich
Schau dir doch mal die Beispiele zu Threads an.
Anschließend packst du den Code in die Execute-Methode des Threads. Ergänzt CoInitialize am Anfang und CoUninitialize am Ende, definierst den übergabeparameter DTSXFile als Property des Threads und schon sollte es klappen. |
Re: Anwendung reagiert während ausführen von SSIS Paket nich
Hallo Bernhard!
Besten Dank für die Antwort! Habe nun alles in einen Thread gepackt. Allerdings happert es noch mit den "CoInitialize". Was übergeb ich hier? Pointer!? Auf was? Gruß Chris |
Re: Anwendung reagiert während ausführen von SSIS Paket nich
Probier erstmal
Delphi-Quellcode:
CoInitialize(nil);
|
Re: Anwendung reagiert während ausführen von SSIS Paket nich
Hatte ich schon versucht.
Leider bringt das alles nichts. Meine Anwendung steht nach wie vor wenn Sie das Paket ausführt. Hier nochmal der neue Quelltext mit Thread.
Delphi-Quellcode:
Hab es noch ein bisschen modifiziert, da ich zukünftig die Events mitloggen will.
type
TDTSThread = class(TThread) private FDTSXFile: string; procedure Execute; override; procedure SetDTSXFile(DTSXFile: string); protected property DTSXFile: string write SetDTSXFile; end; . . . procedure TDTSThread.Execute; var DTSpkg : IDTSPackage90; DTSApp : TApplication; pkgResult : DTSExecResult; pkgEvents : IDTSEvents90; begin CoInitialize(nil); DTSApp := TApplication.Create(nil); DTSpkg := DTSApp.LoadPackage(FDTSXFile, True, pkgEvents); pkgResult := DTSpkg.Execute(nil,nil,nil,nil,nil); DTSApp.Free; CoUninitialize(); end; . . // Aufruf DTSThread := TDTSThread.Create(True); DTSThread.FDTSXFile := ExtractFilePath(Forms.Application.ExeName)+'\DTS\ExportDatenaufbereitung.dtsx'; DTSThread.Execute; |
Re: Anwendung reagiert während ausführen von SSIS Paket nich
[quote="Boppe"]
Delphi-Quellcode:
Autsch! Du führst die Execute-Methode im Hauptthread aus. Du solltest schon den Thread richtig starten (Aus dem Kopf: Suspended := False).
DTSThread.Execute;
|
Re: Anwendung reagiert während ausführen von SSIS Paket nich
Eher DTSThread.Resume.
|
Re: Anwendung reagiert während ausführen von SSIS Paket nich
Ääääähhhhmm! :? tja was soll ich sagen.... :wall:
Ich glaube jede weitere Peinlichkeit spar ich mir für heute und sag einfach Danke! Funktioniert jetzt alles perfekt. Gruß Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz