使用 C# 中的相对路径进行 SSIS 远程执行
本文关键字:程执行 执行 SSIS 相对 路径 使用 | 更新日期: 2023-09-27 17:56:25
我正在尝试执行一个远程(驱动程序包),而远程(驱动程序包)又执行SSIS包。
我正在使用使用 Microsoft.SqlServer.Dts.Runtime 命名空间来做这个和下面的代码。
var app = new Application();
var pkg = app.LoadPackage(pkgLocation, null, true);
pkg.ImportConfigurationFile(configfilePath);
var pkgResults = pkg.Execute();
if (pkgResults == DTSExecResult.Success)
{
isPackageExecuted = true;
}
我面临的问题是远程驱动程序包有一个与之关联的配置文件,该文件使用相对路径。当我从开发计算机执行驱动程序时,我们正在从不同的文件夹结构运行到部署的驱动程序/SSIS 包。所以我可以成功调用驱动程序,但它找不到本地包,因为它使用其本地计算机起始地址作为远程服务器上的起点,而远程服务器上不存在。
例如
开发机器
C:''Code''TFS''Test''SSIS''assembly.dll
远程机器
C:''驱动程序''配置C:''驱动程序''包
当我调用远程计算机时,它以"C:''Code''TFS''Test''SSIS"为起点,然后使用相对路径查找 SSIS 包,但找不到它们。
有没有人解决这个问题或替代方法?
更新,我通过从系统内部执行 psexec 来解决问题,这允许您设置远程机器的工作目录以正确处理相对路径。然后,我使用 Process.Start ets... 从我的 C# 代码中调用了 psexec。传入命令行执行值
Package.ImportConfigurationFile 会很乐意采用绝对路径(如 http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.package.importconfigurationfile.aspx 所示),这将让您避免相对路径问题(只要您知道远程机器文件夹结构,即)。