2016-04-12 39 views
1

按照该Microsoft documentation on DTEXEC for executing SSIS packagesSSIS脚本任务错误:“找到SQL Server集成服务2012脚本任务,需要迁移”

When you use the version of the dtexec utility that comes with SQL Server 2012 Integration Services (SSIS) to run a SQL Server 2005 Integration Services (SSIS) or a SQL Server 2008 Integration Services (SSIS) package, Integration Services temporarily upgrades the package to SQL Server 2012 Integration Services (SSIS).

是否有一个功能运行SSIS包时禁用DTEXEC实用这方面?

我这个问题的原因是我有一个脚本任务来重命名SSIS包中的某些文件。这在我的本地机器和同事本地机器上工作得很好,但在将此SSIS包部署到安装了SQL Server 2012的Windows 2012服务器之后,我收到一条错误消息。我真的很困惑,因为我写了这个包在SQL Server 2012数据工具使这个任务不应该需要升级/迁移可言,这是错误的抱怨......

Warning: 2016-04-06 11:29:58.14
Code: 0x00000000
Source: DataMergeScriptTask
Description: Found SQL Server Integration Services 2012 Script Task "my_Script_task" that requires migration!

End Warning

Error: 2016-04-06 11:30:03.02
Code: 0x00000001
Source: DataMergeScriptTask
Description: Exception has been thrown by the target of an invocation.

End Error

+1

AFAIK此行为是内置的,无法更改。这就是为什么人们经历了将2008年版软件包升级到2012年的痛苦原因。我猜你的错误是由脚本任务中使用的“截断C#或VB.net”的不同版本引起的。您是否尝试升级软件包?任务的问题可能很简单,因为需要稍微区别名称空间引用。 – SebTHU

+0

有趣的是,这个软件包已经成功地使用SQL Server 2012数据工具进行了转换......我甚至用SQL Server 2012数据工具重新编写了一个新软件包,并得到了相同的结果。看起来像SQL服务器数据工具2012脚本任务被破坏。 –

+0

似乎我们可以将我们的C#脚本转换为独立的控制台应用程序/ exe,并将其放在服务器上。我希望我能够在SSIS的背景下为这个问题找到一个解决方案,尽管......非常令人失望。 –

回答

1

不幸的是,我们还没有找到脚本任务的解决方案,因为这些包都是用Data Tools 2012编写的,打开/重新保存任务看起来并没有以解决它的方式实际升级脚本任务服务器。

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

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

0

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

确保您的项目副本不会顺利进行。然后右键单击项目名称,选择属性,然后钻入配置属性 - >常规并更新TargetServerVersion。 enter image description here 然后重建和部署。当项目构建时,它现在应该是服务器期望的格式,所以它不会尝试重建引用可能不相同的服务器上的脚本代码。