我们直接通过以下方式修改了SSIS包的脚本:
UPDATETEXT MSDB.dbo.sysssisPackages.Packagedata @ptrval @SearchTextOffset @SearchTextLen @NewText;
修改是为了替换一个字符串常量。为了验证修改是否已保存,我们从SSMS导出了包,并确认导出的脚本包含了我们的修改(我们的新字符串常量)。
但是,当我们通过DTExec执行包时,仍然使用旧的字符串常量。就好像包没有更新过一样。
我们还需要做什么(在UPDATETEXT之后)使我们的更改生效吗?UPDATETEXT是更新包脚本的可行方法吗?
谢谢。
我的回忆是SSIS存储了。net脚本本身和编译的二进制文件。你可以尝试打开你在Visual Studio中导出的包,编辑脚本任务并点击重新编译按钮,保存,保存和部署到MSDB(通过dtutil.exe)
遇到的下一个挑战是
包中的版本号无效
在VS 2017的项目设置中,将目标更改为SQL 2016并重新部署。如果通过命令行进行部署,请确保在130路径中使用dtutil.exe,否则部署将在部署操作期间升级包(假设140 dtutil在path环境变量中首先列出)
将安装路径编号转换为SQL Server版本号的参考答案/图表,即130 == SQL Server 2016
- https://stackoverflow.com/a/18754188/181965