3

同様の質問が見つかりません。次の行を含むビジュアルベーシックスクリプトタスクを含むSSISパッケージがあります- msgbox("some text") 。BIDS から正常に実行され、MSDB から手動で実行されますが、SQL Server エージェントでスケジュールすると、その時点まではパッケージが正常に機能しているように見え、完了します。ただし、メッセージ ボックスは表示されず、その後の実際のタスクは実行されません。スケジュールされたジョブは、完了と成功を報告します。正しい解決策を教えてください。SSIS プロキシ アカウントとそのセキュリティに関係があると思いますが、何も見つかりません。これを解決する方法を知っている人はいますか?

これが私のコードのスナップショットです。ご覧のとおり、パッケージでどのような手順が実行されているかをログに記録するために、多くのメッセージ ボックスを表示しています。

xworkbook = ExcelObject.Workbooks.Open("C:\xxx.csv") 
xworksheet = DirectCast(xworkbook.Sheets(1), Excel.Worksheet) 
MsgBox("csv") 
xworksheet.Range("B:B").Replace(What:=",", Replacement:="") 
MsgBox("replace 1") 
xworksheet.Range("B:B").Replace(What:=".", Replacement:="") 
MsgBox("replace 2") 
xworkbook.SaveAs("C:\xxx.xlsx", FileFormat:=51) MsgBox("saved")
4

3 に答える 3

3

機能しない理由は、SSIS タスクをスケジュールされたジョブとして実行すると、アカウントのコンテキストでは実行されず、SQL Server エージェントのサービス アカウントとメッセージ ボックスが実行されないためだと思います。あなたのために表示します。メッセージ ボックスは、非対話型タスクには無効です。

于 2013-06-24T11:55:37.823 に答える
2

@jpw さんは、「メッセージボックスは非対話型タスクには有効ではありません」と頭を悩ませています。

機能させるには、コードからメッセージ ボックスを削除するか、ブール変数の値を検査する必要があります。System::InteractiveMode

おおよそのコード

If CBool(Dts.Variables("System::InteractiveMode").Value) = True Then
    ....
End if

各種参考資料

于 2013-06-24T18:40:11.580 に答える