2012-04-03 84 views
0

對此已存在問題(here)。但我希望因爲我正在使用PowerShell 2和SQL Server 2008,如果我再次詢問,可能會得到不同的答案。通過SQL Server代理作業調用PowerShell腳本 - 啓動腳本不會得到輸出

基本上,我有一個SQL Server代理作業,其運行CMD腳本,像這樣:

powershell "&D:\SQL\Job\JobDir\Upload.ps1 (various arguments including log file name)" 

當它運行時啓動轉錄本,在文件被創建,但沒有除了頭被寫入文件。但是,當我在命令行上運行時,所有內容都已正確記錄。

我已經有了很多的邏輯來管理powershell腳本中的舊日誌文件,並且不想僅僅使用SQL Server代理提供的默認日誌記錄。

要寫出信息,我使用帶有詳細標誌的invoke-sqlcmd,以及寫入消息和寫入錯誤。

感謝您的指點! 西爾維亞

回答

0

權限的文本文件對我來說不是問題。我認爲有很多方法可以非常精確地處理powershell的輸出,包括所有不同的輸出流(錯誤,詳細等),但我只是使用了SQL Server代理爲每個作業步驟提供的默認日誌記錄。它工作正常。我仍然使用我編寫的邏輯來管理和存檔腳本中的日誌文件,即使日誌文件本身是由SQL Server生成的,我也可以這樣做。

0

開始轉錄本創建一個文本文件

很可能是代理工作在其下運行的權限沒有權限來創造一個PowerShell的希望去創造

+0

感謝您的評論。我修改了這個問題,使其更加清晰,但文件實際上正在創建,幾乎沒有寫入它。 – Sylvia 2012-04-03 13:42:33

+0

我仍然懷疑權限 - 嘗試在您自己的憑據下運行作業。 – Jimbo 2012-04-03 18:22:10

0

爲啓動成績單上面已經指出將創建中指定的位置的文件(只要代理人有權有創建文件)。然而,沒有任何東西會被傳輸到腳本文件,因爲從技術上講沒有控制檯窗口正在運行。

當運行通過SQL代理(預2012)等 ℃的文件的powershell:\窗口\ system32 \ WindowsPowerShell \ V1.0 \ powershell.exe C:\ myscript.ps1 「SOMEPARAMETER」

我只需在SQL步驟高級屬性(如 C:\ LOGGING \ myfile_ $(ESCAPE_SQUOTE(STRTDT))_ $(ESCAPE_SQUOTE(STRTTM)).txt中使用SQL代理的本機輸出文件選項,並跳過powershell的轉錄能力。

在必要時包含寫主機。寫主機「r n」將適當地創建新行。 還包括像-Verbose這樣的東西,並允許錯誤輸出和嘗試/捕獲和文件將適當記錄。