将SQL Server 2012 DTS包迁移至2019时遇SSISScriptComponentEntryPointAttribute未定义问题
我需要将多个SQL Server 2012的DTS包迁移至SQL Server 2019。这些包通过dtexec.exe命令行运行时一切正常,但尝试像之前一样通过SQL Server Agent安装并运行时,却收到错误提示无法访问文件:
C:\Windows\Temp.NETFramework,Version=v4.0.AssemblyAttributes.vb
该文件实际存在,且我以本地管理员身份通过Windows身份验证登录SQL Server,理论上具备访问权限,这个错误看起来并不合理。
(更新:我尝试过通过SQL Server Integration Services以及直接从文件系统创建并运行这些作业,两种方式均出现上述相同问题。)
查阅资料后,我了解到正确的迁移方式应为安装Visual Studio/数据工具/Integration Services,在其中加载DTS包,检查并修复错误——即在新IDE中重新构建。但操作时,DTS包内的VisualBasic脚本出现大量如下错误:
找不到脚本的二进制代码。请在设计器中打开脚本(...)
打开脚本后,收到类型缺失的提示:
BC30002 - 类型'Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute'未定义。(...)
这十分奇怪,因为我可在Visual Studio中正常查看该类型的源码。
请问为何会出现这些问题?该如何解决?既然包通过dtexec.exe命令行运行正常,为何还需处理这些问题?
服务器版本信息
- Microsoft SQL Server 2012 (SP4-GDR) (KB4583465) - 11.0.7507.2 (X64) Developer Edition (64-bit) on Windows NT 6.3 (Build 9600: ) (Hypervisor)
- Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) Sep 24 2019 13:48:23 Developer Edition (64-bit) on Windows Server 2019 Standard 10.0 (Build 17763: ) (Hypervisor)
内容的提问来源于stack exchange,提问作者zb226

