2

print ' '使用時にSQLスクリプトをログファイルにルーティングする方法を知っている人は誰Invoke-Sqlcmdですか?

を使用してみsqlcmd -o someoutfile.txtましたが、上書きされ、既存のファイルに追加されません。また、SQL エラーが発生した場合は、エラー メッセージのみがファイルに送信され、print ' '. を使用するInvoke-Sqlcmd | out-file someoutfile.txt -Appendと、SQL エラーのみが追加されWrite-Output、最終的に SQL エラーが追加されますが、print ' '実行された SQL スクリプトには追加されません。

誰かがこれに対する解決策を見つけましたか?

4

2 に答える 2

4

Invoke-SqlCmd は、verbose パラメーターを使用して T-SQL PRINT ステートメントと RAISERROR を実装します。詳細な出力を取得するには、まず、invoke-sqlcmd への呼び出し ( invoke-sqlcmd -verbose)にパラメーターを含める必要があります。次に、次の 2 つのいずれかを行います。

Powershell V3 以降を使用している場合は、詳細出力をリダイレクトできます。

invoke-sqlcmd -verbose 4>&1 | outfile someoutfile.txt

Powershell V2 を使用している場合、詳細出力をファイルにリダイレクトすることはできませんが、start-transcript を使用してすべての画面出力をファイルに送信できます。このアプローチの 1 つの落とし穴 - SQL Agent Powershell ジョブ ステップでは機能しません。ただし、powershell.exe を呼び出す cmdexec ジョブ ステップでは機能します。

于 2013-07-10T11:07:23.757 に答える