【发布时间】: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 任务调度程序调用的批处理作业。看起来这会让我们让它运行起来!