SSDT 2017导入项目后脚本任务丢失变量问题求助
这种情况我之前处理过好几次,大概率不是SSDT的纯bug,更多是版本兼容性或者迁移过程中元数据解析的小问题,给你几个实测有效的解决思路:
检查项目目标服务器版本兼容性
打开项目后右键点击项目→选择「属性」→切换到「配置属性」→「常规」,查看「TargetServerVersion」是否和你的SSIS服务器版本完全匹配。比如如果服务器是SQL Server 2017,这里必须选对应的版本——有时候直接从服务器导入项目后,这个版本会自动匹配错误,导致变量映射的元数据没有正确加载。修改版本后保存项目,重新打开所有包,变量大概率会恢复显示。手动修复单个脚本任务的变量映射
针对每个丢失变量的脚本任务,双击打开脚本编辑器,先不要点「编辑脚本」,直接在「ReadOnlyVariables」和「ReadWriteVariables」的输入框里,重新勾选对应变量(或者手动输入变量名,多个变量用英文逗号分隔)。保存脚本任务后关闭再打开,确认变量是否保留。虽然这个方法需要逐个处理,但你的项目只有10个包,工作量不大,而且见效快。清理SSDT的缓存文件
SSDT有时候会缓存旧的元数据,导致显示异常。你可以:- 完全关闭SSDT
- 打开文件资源管理器,输入路径:
%LOCALAPPDATA%\Microsoft\VisualStudio\15.0\ComponentModelCache(SSDT 2017对应VS2017,版本号是15.0) - 删除该目录下的所有文件
- 重新启动SSDT并打开项目,看看变量是否正常显示
换一种方式导入项目
如果之前是直接从SSIS服务器导入项目,试试先把服务器上的项目导出为ISPAC文件,再用SSDT打开这个本地的ISPAC文件。直接从服务器导入时,偶尔会出现元数据解析遗漏的情况,本地导入ISPAC文件的过程更稳定,能避免这类问题。检查脚本任务的.NET Framework版本
SSIS 2017的脚本任务默认使用.NET Framework 4.6,如果服务器上的原始包使用的是更低版本(比如4.5),SSDT在导入时可能会出现变量映射的解析问题。你可以右键脚本任务→选择「编辑脚本」,在打开的Visual Studio窗口中查看项目的.NET Framework版本,确保和服务器上的版本一致,调整后保存再返回SSDT查看变量。
内容的提问来源于stack exchange,提问作者Maranax

