我找不到类似的问题。我有一个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")
答案 0 :(得分:3)
我认为它不起作用的原因是当您将SSIS任务作为预定作业运行时,它不会在您的帐户上下文中运行,而是在SQL Server代理和消息框的服务帐户中运行不会为你显示。消息框对于非交互式任务无效。
答案 1 :(得分:2)
@jpw在头上敲了一下“消息框对非交互式任务无效。”
要使其工作,您需要从代码中删除消息框或检查布尔变量System::InteractiveMode
代码约
If CBool(Dts.Variables("System::InteractiveMode").Value) = True Then
....
End if
各种参考文献
答案 2 :(得分:2)
您可以通过更改流程来解决此问题,从而无需用户干预。除了调试之外,你没有理由在SSIS中有一个消息框。