我们在 MSDB.dbo.sysssisPackages 中直接修改了 SSIS 包,但旧版本仍然运行

We modified SSIS package directly in MSDB.dbo.sysssisPackages but old version still runs

我们通过以下方式直接修改了 SSIS 包的脚本:

UPDATETEXT MSDB.dbo.sysssisPackages.Packagedata @ptrval @SearchTextOffset @SearchTextLen @NewText;

修改是为了替换一个字符串常量。为了验证修改是否已保存,我们从 SSMS 导出包并确认导出的脚本包含我们的修改(我们的新字符串常量)。

但是,当我们通过DTExec 执行包时,旧的字符串常量仍在使用。好像没有更新包。

为了使我们的更改生效,我们还需要做些什么(在 UPDATETEXT 之后)吗? UPDATETEXT 是更新包脚本的可行方法吗?

谢谢。

我记得 SSIS 存储了 .NET 脚本本身 编译后的二进制文件。您可以尝试打开您在 Visual Studio 中导出的包,编辑脚本任务并点击重新编译按钮,保存,保存并部署到 MSDB(通过 dtutil.exe)

下一个挑战是

The version number in the package is not valid

在 VS 2017 的项目设置中,将目标更改为 SQL 2016 并重新部署。如果通过命令行部署,请确保在 130 路径中使用 dtutil.exe,否则部署将在部署操作期间升级包(假设 140 dtutil 在 PATH 环境变量中列在最前面)

参考 answer/chart 将安装路径编号转换为 SQL 服务器版本,即 130 == SQL Server 2016