SQL Server上的脚本任务在重建或迁移后工作
在开发了能够使用EzAPI为SQL Server自动生成DTSX包的软件之后,同时还包含了一个带有Web客户端的脚本任务,奇怪的事情开始发生了。
脚本任务引用来自GAC的DLL,该DLL使用反射调用API来完成任务。
下面是一些奇怪的事情:
导出SQL server 2012的软件包后,如果我将其部署在SQL Server 2012上,它可以工作,但不能与远程服务器通信。另一方面,同样适用于SQL server 2012的软件包,如果我将其部署到较新版本的SQL Server,它可以正常工作并与远程服务器通信。
一旦我为SQL server 2014导出软件包,如果我将其部署在SQL Server 2014上,它可以工作,但不能与远程服务器通信。另一方面,同样适用于SQL server 2014的软件包,如果我将其部署到较新版本的SQL Server,它可以正常工作并与远程服务器通信。
一旦我导出SQL server 2016的包,如果我将其部署在SQL Server 2016上,它可以工作,但不能与远程服务器通信。另一方面,同样适用于SQL server 2016的包,如果我将其部署到较新版本的SQL Server,它可以正常工作并与远程服务器通信。
此外,似乎如果我用DataTools或Visual Studio打开包,它可以工作,但不能与远程服务器通信。另一方面,如果我重新构建脚本任务,那么它就可以工作并与远程服务器通信。
我的结论是,迁移会迫使脚本任务重新构建代码,这就是在更高版本中部署时需要工作的原因。
但是不知道为什么不迁移或重建代码就不能工作。请注意,2014年的套餐在2014年不起作用,但在2016年起作用。此外,2012年的软件包在2012年不起作用,但同样的软件包在2014年起作用。所以问题不是SQL的版本,也不是任何代码的问题。
此外,在通过VSTA进行开发时,我们故意在脚本任务中犯了语法错误,但脚本任务已成功构建,并且我们在SQL Server 2012上部署了程序包。报告通过SSIDB成功执行该包,而不执行任何操作。另一方面,我们将SQL Server 2012的相同程序包部署到SQL Server 2014,SSMS报告该程序包无法构建脚本任务。
现在看来,在同一版本的SQL Server中部署脚本任务时,脚本任务会被绕过,并且总是返回成功。
有什么想法吗?
转载请注明出处:http://www.txqp3.com/article/20230526/1127473.html