Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 脚本任务损坏-从SQL Server 2016升级到SQL Server 2016 SP2后SSIDB执行错误_Sql Server_Sql Server 2016 - Fatal编程技术网

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

Sql server 脚本任务损坏-从SQL Server 2016升级到SQL Server 2016 SP2后SSIDB执行错误,sql-server,sql-server-2016,Sql Server,Sql Server 2016,我们最近将生产SQL Server 2016企业实例从SP1更新为SP2。我们目前的版本是13.0.5026。升级之前,具有SSISDB连接权限和Integration Services目录文件夹正确权限的用户可以成功部署ISPAC文件 升级后,相同的用户仍然可以部署到SSIDB,但当您执行.DTSX时,内部的脚本任务验证失败。如果我部署与系统管理员完全相同的ISPAC,就不会有问题。我看到的通常解决方案是确认SSDT配置属性设置为SQL Server 2016。在构建ISPAC之前,我们已验证

我们最近将生产SQL Server 2016企业实例从SP1更新为SP2。我们目前的版本是13.0.5026。升级之前,具有SSISDB连接权限和Integration Services目录文件夹正确权限的用户可以成功部署ISPAC文件

升级后,相同的用户仍然可以部署到SSIDB,但当您执行
.DTSX
时,内部的脚本任务验证失败。如果我部署与系统管理员完全相同的ISPAC,就不会有问题。我看到的通常解决方案是确认SSDT配置属性设置为SQL Server 2016。在构建ISPAC之前,我们已验证此设置是否正确

几年前,我从SQL Server 2014迁移到2016时也遇到了类似的问题,但当时的解决方案是让运行包的代理帐户拥有对
C:\Windows\Temp
文件夹的修改权限,以便它可以生成临时文件。这个新问题很难确定,我不想只为了让其他人能够完成简单的部署步骤而发布sysadmin

如有任何想法或建议,我们将不胜感激

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

服务器有一个SQL server 2016部署工具,位于SQL server/130/DTS/Binn-ISDeploymentWizard.exe下。此部署工具可以正常工作。140/DTS/Binn位置下还有另一个相同的向导,名称相同,但大1KB(假设这是因为SSMS现在是一个单独的安装,我在服务器上安装了最新的和最好的)。这一个部署失败。为什么一个有效,而另一个无效,我的头撞到了墙上。在本地,我们都使用SSMS 2017,然后我们得到的是140/DTS/Binn ISDeployment文件,而不是130(因为这是SQL Server 2016,我们使用的是SSMS 2017,我认为是向后兼容的)。不管怎样,这个问题刚刚开始出现,我们已经使用同一版本的SSMS几个月了


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

在我的例子中,带有C#脚本源的包在验证阶段开始抛出以下错误:

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

C#源组件名称
的版本与此不兼容 数据流的版本。[[版本或管道版本或两者都适用于 指定的组件高于当前版本。此 包可能是在新版本的DTS或组件上创建的 安装在当前电脑上的。]] 位于Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostCheckAndPerformUpgrade(IDTSManagedComponentWrapper100 包装器,Int32 lPipelineVersion)


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

您可以随时区分转换后的
.dtsx
文件,查看是否有冒烟的枪。比较这些并不是一件有趣的事,但我一直在为脚本任务从一个公认的更旧的版本转换到2017而悲伤不已,而向导们只是忽略了这一点——我最终不得不手动编辑包,使脚本任务项目定义与一个全新包中创建的“普通”脚本任务相匹配。如果您的软件包仍然使用旧版本,而您依靠即时升级来节省时间,那么他们可能不会这样做。您好,raveseer,我也遇到了同样的错误,但我需要在SQL Server 2014中部署该项目。我可以使用130/DTS/Binn位置下的向导,还是必须使用其他位置下的向导?您好,Sql程序员,130文件夹下的向导适用于Sql Server 2016。如果您尝试使用它,您可能会遇到与我使用140版本相同的问题,因为您使用的部署实用程序的版本比SQL server的版本更新。我建议您找到合适的120兼容版本进行部署。同样,我不确定它是否对您有效,您需要进行测试。谢谢,谢谢你,罗杰。我只是来更新我的帖子,因为我昨天发现了同样的事情。显然,正是因为他们使数据工具与以前的版本向后兼容,他们才没有对ISDeploymentWizard进行同样的操作。我们能够成功地使用130/DTS/Binn版本,并且我们正在开发人员机器上并排安装SSDT 2016,以获得该实用程序的130版本。