我们在 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
我们通过以下方式直接修改了 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