11 Stimmen

Ausführen desselben SSIS-Pakets mit verschiedenen Parametern zu verschiedenen Zeitpunkten

Ich habe ein SSIS-Paket, das um 20 Uhr abends für das Jahr 2011 läuft.

Ich möchte das gleiche Paket um 20:30 Uhr für das Jahr 2010 durchführen.

Ich habe eine SSIS-Paket-Konfigurationsdatei erstellt und akzeptiere das "Jahr" als Parameter. Jedes Mal, wenn ich ausführe, muss ich eine Datei öffnen, den Wert ändern und sie ausführen.

Ist es möglich, den Zeitplan einzurichten und den Jahreswert dynamisch zu setzen?

Oder ist die Verwendung von 2 verschiedenen Konfigurationsdateien die einzige Möglichkeit, das Problem zu lösen?

Vielen Dank an alle.

20voto

billinkc Punkte 56321

Das Problem bei der Verwendung einer Konfigurationsdatei ist, dass Sie die Datei ständig ändern müssen. SSIS würde die Konfigurationsdatei nach dem Start nicht neu laden, so dass es denkbar wäre, 8:05 und 8:35 PM Aufträge zu haben, die die Konfigurationsdateien austauschen, aber das würde irgendwann unübersichtlich werden und kaputt gehen.

Ich würde diese Situation mit Kommandozeilenvariablen behandeln ( Option /set in dtexec ). Wenn Sie das Paket von der Kommandozeile aus starten würden, sähe es etwa so aus dtexec.exe /file MyPackage.dtsx Auch wenn Sie den SQL Agent verwenden, erstellt er im Hintergrund diese Befehlszeilenargumente.

Bei diesem Ansatz wird davon ausgegangen, dass Sie zwei verschiedene Aufträge erstellen (im Gegensatz zu 1 Auftrag, der 2x täglich geplant wird). AgentMyPackage2011 hat einen Job-Step von SSIS, der Folgendes ergibt

  • dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2011\"

und AgentMyPackage2012 hat einen Job-Step von SSIS, der zu folgenden Ergebnissen führt

  • dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2012\"

Über die grafische Benutzeroberfläche würde es etwa so aussehen SQL Agent Set values tab

SQL Agent Command line tab

Es gibt keine grafische Benutzeroberfläche oder einen Selektor für die Eigenschaft, die Sie konfigurieren möchten. Da Sie jedoch bereits eine .dtsConfig-Datei für Ihr Paket erstellt haben, öffnen Sie diese Datei und suchen Sie nach einem Abschnitt wie

<Configuration ConfiguredType="Property" Path="\Package.Variables[User::Year].Properties[Value]" ValueType="Int32">
<ConfiguredValue>2009</ConfiguredValue>

Die Datei enthält bereits den Pfad zu dem "Ding", das Sie konfigurieren möchten. Geben Sie diesen Pfad in Ihr aufrufendes Programm ein und deaktivieren Sie dann den Jahresabschnitt der Paketkonfiguration.

Schließlich ein Link zu SSIS-Konfiguration Vorrangig da es Unterschiede zwischen dem Modell 2005 und 2008 gibt. Wie ich sehe, haben Sie in Ihrem Ticket 2008 angegeben, aber für zukünftige Leser: Wenn Sie sowohl /SET als auch eine Konfigurationsquelle (xml, Sql-Server, Registrierung, Umgebungsvariable) verwenden, variiert die Reihenfolge der Operationen zwischen den Versionen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X