3

我找不到类似的问题。我有一个 SSIS 包,其中包含一个 Visual Basic 脚本任务,其中包含以下行 - 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

I believe that the reason it won't work is that when you run the SSIS task as a scheduled job it doesn't run in the context of your account but rather the service account for the SQL Server Agent and the message box won't show for you. The messagebox isn't valid for a non-interactive task.

于 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 回答
2

您可以通过更改流程来克服这个问题,这样就不需要用户干预。除了调试之外,您没有理由在 SSIS 中拥有消息框。

于 2013-06-24T18:41:01.767 回答