【问题标题】:SSIS script task fails on server with error "Cannot load script for execution"SSIS 脚本任务在服务器上失败,并出现错误“无法加载脚本以执行”
【发布时间】:2013-03-01 19:53:29
【问题描述】:

我有 3 个带有脚本任务的 SSIS 包,它们都做非常相似的事情 - 查询 SQL Server 数据库,遍历结果,然后为每一行调用一个 SOAP Web 服务。 这些包在本地运行良好,在开发和 QA 服务器上运行良好。

在生产服务器上,1 运行正常,2 失败并出现不祥的“无法加载脚本以执行”错误。这些是 Server 2008 SP2 上的 SQL 2008 R2 环境。无论运行它们的用户如何,都会发生错误。

到目前为止,我已经尝试了以下方法:

  • 在我的开发环境中运行包,数据库连接指向生产环境(运行良好)
  • 在项目设置中将 Run64BitRuntime 设置为 false。没有区别。
  • 删除包并重新部署
  • 按照建议here 提供对/Windows/Temp 的显式写入访问权限。这最初是在使用代理用户运行时发生的,所以我们尝试了这个修复。但是当我使用我的管理员帐户运行时,我遇到了同样的错误。

我无法在生产服务器上重新编译脚本,因为开发堆栈不存在并且它是生产服务器。 我也无法按照here 的建议在此服务器上安装或更新 BIDS。

根据某些人的发现,似乎可能需要在目标环境中重新编译脚本,但我没有这个选项。

【问题讨论】:

  • 不管它是作为代理作业运行还是直接使用执行包实用程序运行。同样的错误。不过,该属性设置为 32 位。
  • 感谢您的努力,但脚本无法编译/加载,因此这不是运行时问题。它与安全或环境有关。运行的一个包可以很好地访问 Web 服务。
  • 我不知道补丁级别。配置都是数据库驱动的,并且对于所有包都是相同的。顺便说一句,我刚刚在其中一个失败的包中重新创建了脚本任务,复制了所有代码,重新部署,瞧,它可以工作了。让我大吃一惊。

标签: ssis


【解决方案1】:

所以,不幸的是,答案是重建脚本任务。看来这些东西可能会被破坏。我确实没有更改任何一行代码,只是重新创建了任务并从损坏的版本中复制了代码。

【讨论】:

  • 重新创建任务会更改底层 XML 元数据。它需要重新编译。
  • 不会从脚本项目中运行“构建”也会更改 XML 元数据吗?那没有达到预期的效果。我想它并没有“足够”地改变 medatadata。重新编译(C#)脚本项目并重新部署包没有帮助。
  • 我收到了DTS Script Task: Runtime Error :: Exception has been thrown by the target of an invocation 在花了几个小时试图找出问题所在并尝试调试之后,我也遇到了上述错误。 这个解决方案解决了这两个问题
  • 谢谢,这有帮助!
  • 老问题,但重新创建脚本任务确实修复了错误。
【解决方案2】:

也可能是版本不匹配。如果 SSIS 项目设置为面向 SQL Server 2012,但部署到 SQL 2016 实例,则会发生此错误。在项目属性中更改目标版本并重新部署。

【讨论】:

  • 在哪里更改 SSIS 项目的目标服务器版本?
  • 右键单击项目并单击属性,然后单击配置属性
  • 我在VS2019中开发包,默认目标是SQL2019。将目标更改回 SQL 2017(我正在部署作业的地方)对我有用。谢谢
  • 谢谢你,我正在部署到 Azure,当我检查项目属性时,它是到 SQL2019,Azure Enabled = FALSE。将其更改为 true(也将版本更改为 2017)已立即解决了问题
【解决方案3】:

Microsoft 对 SSIS2008R2 和 SSIS2012 之间的 ScriptTasks 进行了重大更改。值得庆幸的是,修复非常简单。只需替换这一行:

? 1 [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")] 用这个:

? 1 [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute] 一切都应该按预期为您工作。

【讨论】:

  • 这为我解决了问题。非常感谢@Ankit
  • 我的荣幸!如果有帮助,请将此标记为答案。
  • 您在哪里进行这些更改?
  • @Hotelsinger - 我在脚本编辑器中进行了这些更改。
  • 已经在脚本中有这个属性但是仍然得到错误:(
【解决方案4】:

我遇到了类似的问题,但在我的情况下,目标机器在 GAC 中缺少一个 dll,用于使用 Microsoft Webservices3 进行的一些 SOAP Web 服务调用。一旦我从 Microsoft 下载安装并安装在目标机器上,问题就解决了。

【讨论】:

    【解决方案5】:

    在 Visual Studio 2019 上,我必须重建整个包,而不仅仅是脚本任务。我通过将所有包任务、变量和参数复制并粘贴到一个新的中来做到这一点。

    【讨论】:

      【解决方案6】:

      我发现如果您的 C# 脚本是针对旧版本的 SQL 构建但包含新的 C# 语法(例如三元运算符“?:??”),也会弹出错误。或字符串插值 $"{varaible}"。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-08
        • 2023-04-01
        相关资源
        最近更新 更多