sql-server - 当从 Visual Studio 构建/部署工作正常时,ispac 文件部署错误
问题描述
我们有两个包作为一项工作的一部分。我们将这些相同的包从一个 SQL Server 集成服务目录 SSISDB 文件夹复制到同一集成服务目录 SSISDB 文件夹(相同命名空间)中的另一台 SQL Server。在复制了包的新服务器上运行此作业时,该作业运行但失败并且也不会产生错误消息(我们记录了任何错误消息)。
从 Visual Studio 构建和部署这两个相同的包到相同的 SSISDB 文件夹然后运行作业时,作业会按预期运行。
通过 .ispac 文件部署时,我们遇到错误的脚本任务
ScriptTaskName: There was an exception while loading ScriptTask from XML:
System.Exception: The Script Task "ST_0001a..." uses version 15.0 script
that is not supported in this release of Integration Services. To run the
package, use the Script Task to create a new VSTA script. In most cases,
scripts are converted automatically to use a supported version, when you
open a SQL Server Integration Services package in %SQL_PRODUCT_SHORT_NAME%
Integration Services. at
MicrosoftSqlServer.Dts.Tasks.ScriptTaskScriptTaskLoadFromXML(XmlElement
elemProj, IDTSInfoEvents events)
为什么只有构建和部署方式才能使包按预期工作?
解决方案
这种错误有几个可能的原因。
首先- 您应该将您的SSDT 版本从 MS更新到最新版本,在项目属性中设置正确的目标SQL Server 版本并重建包。当此属性重置为SQL vNext时,可能会出现这种情况。
有声明说您的 SSDT 版本包含导致此错误的错误。
其次- 由于某种原因,当从 SSMS 部署 .ispac 或通过在File Explorer中单击它时,SSMS 会隐式地将项目和其中的包升级到自己的版本。有关此行为的详细报告。我怀疑你有 SSMS 2017 并且它执行脚本任务到版本 15 的隐式升级。
如果你想由支持团队部署包而不使用 SSMS,这里是方法。使用IsDeploymentWizard - Microsoft 实用程序来管理包和项目部署。它具有 GUI 和命令行参数来处理部署。
以下是其中一个项目的示例:
isdeploymentwizard /S /SP:"D:\Project\Proj.ispac" /DS:"myserver\instance" /DP:"SSISDB/ProjectFolder"
确保IsDeploymentWizard 从 SQL bin 目录启动%ProgramFiles%\Microsoft SQL Server\130\DTS\Binn
,而不是从 SSMS。
推荐阅读
- java - 类文件中的 InnerClass 属性有什么用?
- c# - 如何在 Unity 中使用 C# 代码在移动设备上工作?
- c# - serializedObject 变为 null 错误
- python - 如何创建一个新列,将前 5 行和剩余的行合并为杂项?
- c++ - 使用模板向上转换 unique_ptr
- spring-boot - 插入两个集合而不阻塞
- android - getString() 与路径连接?
- intellij-idea - 在 Jetbrains IDE 中定义自定义文件类型时,如何定义如何识别名称?
- react-native - 反应原生 WebView 阻止 openUrl
- javascript - 为什么我在react项目中设置了代码拆分,却没有生成异步chunks文件