脚本任务损坏-从SQL Server 2016升级到SQL Server 2016 SP2后,SSISDB执行错误

时间:2018-11-27 20:28:08

标签: sql-server sql-server-2016

我们最近将生产SQL Server 2016 Enterprise实例从SP1更新到了SP2。我们当前正在版本13.0.5026。升级之前,具有SSISDB连接权限和Integration Services Catalog文件夹上适当权限的用户可以成功部署ISPAC文件。

升级后,相同的用户仍然可以部署到SSISDB,但是当您执行.DTSX时,其中的脚本任务将无法通过验证。如果我部署与系统管理员完全相同的ISPAC,则没有问题。我看到的常见解决方案是确认SSDT配置属性设置为SQL Server2016。我们在构建ISPAC之前已验证此设置是否正确。

几年前从SQL Server 2014迁移到2016时,我遇到了类似的问题,但当时的解决方案是为运行包的Proxy帐户授予对C:\Windows\Temp文件夹的修改权限。生成临时文件。这个新问题很难确定,我不想放弃sysadmin只是为了让其他人可以执行简单的部署步骤。

任何想法或建议都会受到赞赏。

*******更新/编辑************:

服务器在SQL Server / 130 / DTS / Binn-ISDeploymentWizard.exe下有一个SQL Server 2016部署工具。此部署工具有效。在140 / DTS / Binn位置下还有另一个相同的向导,名称相同,但大小增加了1 KB(假设这是因为SSMS现在是单独安装,并且我在服务器上安装的是最新的也是最大的)。此部署失败。关于一个为什么起作用而另一个不起作用的问题,我正在用头撞墙。在本地,我们所有人都使用SSMS 2017,因此,我们得到的是140 / DTS / Binn ISDeployment文件,而不是130(因为这是SQL Server 2016,而我们使用的是SSMS 2017,我认为它是向后兼容的)。无论哪种方式,这个问题才刚刚开始发生,我们使用相同版本的SSMS已有几个月了。

Image of the Execution information report from SSMS

enter image description here

1 个答案:

答案 0 :(得分:1)

最近使用C#脚本解决了类似的问题。简而言之:请勿将140版本的ISDeploymentWizard.exe与MS SQL 2016一起使用。它显然会破坏C#代码或组件属性中的某些内容,并且2016运行时会停止识别它们。

就我而言,带有C#脚本源的程序包已在验证阶段开始引发以下错误:

  

错误:Microsoft.SqlServer.Dts.Pipeline.ComponentVersionMismatchException:

     

C# source component name的版本与此不兼容   版本的DataFlow。 [[版本或管道版本或两者兼有   指定的组件高于当前版本。这个   包可能是在新版本的DTS或组件上创建的   比当前PC上安装的数量更多。]]]       在Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostCheckAndPerformUpgrade(IDTSManagedComponentWrapper100   包装器,Int32 lPipelineVersion)

第一条评论here帮助我最终确定了原因。