Was ist der beste Weg, um ein MS SQL Server 2000 DTS-Paket von einem Trigger auszuführen?

StackOverflow https://stackoverflow.com/questions/252069

  •  05-07-2019
  •  | 
  •  

Frage

sah ich mich um und fand einige Ideen, wie dies zu tun, aber keinen endgültigen besten Weg. Eine der Ideen war sp_start_job zu verwenden, um einen SQL Server-Agent-Auftrag, der das DTS-Paket läuft weg zu treten. Wenn dies der beste Weg, es zu tun ist, dann ist die nächste Frage wäre: „Wie plane ich ein DTS-Paket von einem Job und mache es nicht wiederkehrend?“

Danke, Tim

War es hilfreich?

Lösung

xp_cmdshell Sie erlauben würde, dtsrun auszuführen.

Andere Tipps

würde ich nicht empfehlen, diese Art von Funktionalität zu einem Trigger zu binden. Auslöser sollen schnell sein. Ich glaube nicht, dass es eine Möglichkeit gibt, ein DTS-Paket zu starten, die so schnell sein werden wie I würde ein Auslöser sein will. Wenn dies schwingt mit Ihnen, dann würde ich mit vorschlagen Ihre Trigger einfach eine Zeile in eine spezielle Tabelle einfügen, und dann einen Job haben, der so oft ausgeführt, wie Sie für Ihre Zwecke benötigen (jede Minute? Alle 10 Sekunden?), Dass diese Tabelle überwacht und schlägt das entsprechende DTS-Paket aus je nach Bedarf.

Statt xp_cmdshell verwenden, ich habe dies:

Wenn ein bestimmte Wert in einer Tabelle ändert, wird der Trigger verwendet msdb.sp_start_job einen Job zu starten. Dieser Job soll auf einem Zeitplan nicht ausgeführt, nur wenn sie von einem Benutzer initiiert. Ich habe den Job Zeitplan eine Zeit zu laufen, die jetzt in der Vergangenheit, und ich nicht markierte das aktivierte Feld.

Dieser Job hat einen Schritt, die DTSRun / ~ Z0xHEXENCRYPTEDVALUE ist. Die DTS-Paket kopiert einige Zeilen von diesem Server auf einen anderen Server auf einer anderen Plattform und auf Erfolg setzt die Werte in der Tabelle mit dem Auslöser für die nächste Zeit. Der Trigger überprüft einen Tabellenwert vor sp_start_job Aufruf, so dass der Auftrag nur unter bestimmten Bedingungen gestartet wird, nicht jedes Mal.

Da sp_start_job läuft asyhchronously der Auslöser vervollständigt schnell. Der einzige Nachteil ist, dass ich den Wert abzufragen, der auf Erfolg zurückgesetzt wurde und entweder damit der Benutzer weiß, dass es funktioniert, oder nach einiger Zeit heraus Zeit, es hat nicht funktioniert.

Die Alternative wäre xp_cmdshell zu verwenden, wenn ich einen synchronen Betrieb benötigt, die nicht eine gute Idee, aus dem Inneren eines Auslöser sein könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top