2016-08-02 30 views
0

Zunächst, bevor alle schreit auf mich - ich bin Bug-Fixing in Legacy-Code und ein Re-Write ist aus den Karten für jetzt - Ich muss versuchen, eine Lösung zu finden Verwenden des Befehls xp_cmdshell.xp_cmdshell Befehl nicht letzten Befehl ausführen, wenn als Job ausgeführt

Ich habe eine Proc, die über einen geplanten Job ausgeführt wird. Das Proc ist voll von TSQL wie das Folgende, um Daten in eine Protokolldatei zu schreiben.

Das Problem ist, dass der letzte dieser Befehle im Prozess scheint nicht zu laufen. Ich kann das Ergebnis in der Datei text.txt sehen, aber nicht in der Datei output.txt. Alle vorhergehenden Arbeiten funktionieren gut, und es funktioniert gut, wenn ich das auf eigene Faust renne.

Kann jemand vorschlagen, warum dies passieren könnte oder einen alternativen Weg vorschlagen, dies zu erreichen?

Dank

Antwort

0

Ich denke, dass BCP als externer Prozess async läuft. So könnte es sein, dass Ihre Datei noch nicht in dem Moment geschrieben wurde, in dem Sie versuchen, ihren Inhalt zu kopieren.

  • Vorschlag 1: Fügen Sie eine angemessene Wartezeit
  • Vorschlag 2: Rufen Sie Ihren ersten Befehlsnamen ein zweites Mal mit geänderten Zieldatei
  • Vorschlag 3: Verwenden Sie copy statt type

Sie könnte eine Datei c\temp.txt mit nur Hallo Welt darin erstellen. Versuchen Sie type es in eine Datei vor dem BCP und geben Sie es in eine andere Datei nach dem BCP.

+0

Das ist nur ich vereinfache den Code - korrigiert –

+0

@LawrencePhillips OK, das war nur eine dumme Idee ... Siehe mein Update ... – Shnugo