【问题标题】:SSIS script task not working when scheduledSSIS 脚本任务在计划时不起作用
【发布时间】:2013-06-24 11:28:12
【问题描述】:

我找不到类似的问题。我有一个 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")

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    我认为它不起作用的原因是,当您将 SSIS 任务作为计划作业运行时,它不是在您的帐户上下文中运行,而是在 SQL Server 代理的服务帐户和消息框的上下文中运行不会显示给你。消息框对非交互式任务无效。

    【讨论】:

    • 我认为您在技术上是正确的,但我该如何克服这一点。实际不起作用的代码如下,我怀疑它不起作用的原因与没有出现 msgbox 的原因相同。
    • 我该如何克服这个问题。实际不起作用的代码如下,我怀疑它不起作用的原因与没有出现 msgbox 的原因相同。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("已保存")
    • 我认为您无法克服这个问题,因为计划的作业以非交互方式运行。如果你需要在执行期间给它输入,你需要交互式地运行它。
    • 我设置的 SSIS 代理帐户不应该以我的用户身份运行,因此 vba 可以正常工作吗?我所做的与运行 vba 宏并没有什么不同,它可以在不显示 excel 工作簿的情况下操作 excel 数据。
    • 安全上下文不应该是问题,而是当您使用 SQL Server 代理(无论是否使用代理帐户)运行作业时,作业无需交互即可运行。当您使用消息框请求输入时,没有用户可以向其展示并从中获取输入。
    【解决方案2】:

    @jpw 对“消息框对非交互式任务无效”一针见血。

    要使其正常工作,您要么需要从代码中删除消息框,要么检查布尔变量 System::InteractiveMode 的值

    代码大概

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

    各种参考

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2023-02-07
        • 1970-01-01
        • 1970-01-01
        • 2013-03-10
        • 1970-01-01
        • 2015-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多