【问题标题】:SSIS Script Task Error: "Found SQL Server Integration Services 2012 Script Task that requires migration"SSIS 脚本任务错误:“找到需要迁移的 SQL Server Integration Services 2012 脚本任务”
【发布时间】:2016-04-12 18:35:36
【问题描述】:

根据Microsoft documentation on DTEXEC for executing SSIS packages

当您使用 SQL 附带的 dtexec 实用程序版本时 用于运行 SQL Server 2005 的 Server 2012 Integration Services (SSIS) 集成服务 (SSIS) 或 SQL Server 2008 集成服务 (SSIS) 包,Integration Services 临时升级包 到 SQL Server 2012 集成服务 (SSIS)。

在运行 SSIS 包时是否有禁用 DTEXEC 实用程序这一方面的功能?

我提出这个问题的原因是我有一个脚本任务来重命名 SSIS 包中的一些文件。这在我的本地机器和同事的本地机器上工作得很好,但是在将这个 SSIS 包部署到安装了 SQL Server 2012 的 Windows 2012 服务器后,我收到一条错误消息。我真的很困惑,因为我在 SQL Server 2012 Data Tools 中编写了这个包,所以这个任务根本不需要升级/迁移,这就是错误所抱怨的......

警告:2016-04-06 11:29:58.14
代码:0x00000000
来源:DataMergeScriptTask
说明:找到需要迁移的 SQL Server Integration Services 2012 脚本任务“my_Script_task”!

结束警告

错误:2016-04-06 11:30:03.02
代码:0x00000001
来源:DataMergeScriptTask
说明:调用的目标已引发异常。

结束错误

【问题讨论】:

  • AFAIK 此行为是内置的,无法更改。这就是为什么人们会经历将 2008 软件包升级到 2012 的痛苦。我猜您的错误是由脚本任务中使用的“缩减 C# 或 VB.net”的不同版本引起的。您是否尝试过升级软件包?任务的问题可能很简单,只是需要稍微不同的命名空间引用。
  • 有趣的是,这个包已经使用 SQL Server 2012 Data Tools 成功转换...我什至使用 sql server 2012 数据工具在一个新包中重新编写了整个东西并得到了相同的结果.好像sql server data tools 2012脚本任务坏了。
  • 似乎我们可以使用我们的 C# 脚本并将其转换为独立的控制台应用程序/exe 并以这种方式将其放在服务器上。我希望我能在 SSIS 的上下文中找到解决这个问题的方法……非常令人失望。
  • 这可能是您目前唯一的解决方案,但一般来说,我建议不要使用 SSIS 调用外部 EXE——因为在维护一个有人广泛执行此操作的环境的痛苦经历中。它使部署更加复杂。如果您添加配置,它会变得更糟。并且从 EXE 到 SSIS 的反馈是困难和有限的:例如,如果 EXE 挂起,包也会挂起。您是否尝试过设置断点和调试,因为它是一个任务(可调试)而不是一个组件(不可调试)?
  • 哦,我不会通过SSIS调用外部EXE;只需使用单个 .exe 即可使其在服务器上运行。我们的执行方法是通过 Windows 任务调度程序调用的批处理作业。看起来这会让我们让它运行起来!

标签: ssis ssis-2012


【解决方案1】:

不幸的是,我们还没有找到解决脚本任务不转换为 2012 的解决方案,因为这些包都是用 Data Tools 2012 编写的,打开/重新保存任务似乎并没有真正升级脚本任务在服务器上解决。

我的解决方案是采用 C# 脚本并将其转换为独立的 .exe,它具有一些命令行参数来传递我们不同的参数,并使用默认值来匹配我们当前的环境。然后我将其设置为由 Windows 任务调度程序作业调用的批处理脚本执行。

我希望找到一个真正的解决方案,以便更大包中的脚本任务仍然很漂亮,但这可能需要更多时间或重新安装数据工具...拥有多个版本的 SQL Server 数据工具/我的工作站上的投标可能是造成这种悲伤的原因。更多测试即将到来!

【讨论】:

    【解决方案2】:

    只需更新包中的 TargetServerVersion 以匹配您计划部署到的服务器版本。

    确保您拥有项目的副本,以防项目进展不顺利。然后右键单击项目名称,选择属性,然后深入到 Configuration Properties -> General 并更新 TargetServerVersion。 然后重建和部署。当项目构建时,它现在应该是您的服务器期望的格式,因此它不会尝试在引用可能不同的服务器上重新构建脚本代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 2017-12-26
      相关资源
      最近更新 更多