2016-08-02 59 views
0

首先,在所有人對我發出呼喊之前 - 我在遺留代碼中修復了bug並且現在重新寫入了卡片 - 我必須嘗試找到修復程序使用xp_cmdshell命令。xp_cmdshell命令在作爲作業運行時不會執行最後一個命令

我有一個通過計劃任務執行的proc。 proc充滿TSQL,如下所示將數據轉儲到日誌文件。

SELECT *  
INTO Temp 
FROM MyView 

SET @cmd1 = 'bcp "SELECT * FROM [myDatabase].dbo.Temp" queryout "C:\temp.txt" -T -c -t" "' 
SET @cmd2= 'type "C:\temp.txt" >> "C:\output.txt"' 
EXEC master..xp_cmdshell @cmd1 
EXEC master..xp_cmdshell @cmd2 

DROP TABLE Temp 

問題是,proc中這些命令的最後一個看起來沒有運行。我可以在text.txt文件中看到結果,但不能看到output.txt文件。所有前面的工作都很好,當我自己運行它時它工作正常。

任何人都可以提出爲什麼會發生這種情況或提出一種替代方法來實現這一目標嗎?

謝謝

回答

0

我認爲,BCP作爲外部進程運行異步。所以可能是,您的文件在您嘗試複製其內容的那一刻尚未寫入。

  • 建議1:包括適當的等待時間
  • 建議2:打電話給你的第一個命令第二次與變更後的目標文件名
  • 建議3:使用copy而不是type

你可能會創建一個文件c\temp.txt只需hello world就可以了。嘗試將type它合併到BCP之前的一個文件中,然後在BCP之後將其鍵入到另一個文件中。

+0

這只是我簡化代碼糾正 –

+0

@勞倫斯·菲利普好吧,這只是一個愚蠢的想法...看到我的更新... – Shnugo

相關問題