Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中使用相对路径的SSIS远程执行#_C#_Ssis_Relative Path - Fatal编程技术网

C# 在C中使用相对路径的SSIS远程执行#

C# 在C中使用相对路径的SSIS远程执行#,c#,ssis,relative-path,C#,Ssis,Relative Path,我正在尝试执行一个远程(驱动程序包),它反过来执行一个SSIS包 我正在使用Microsoft.SqlServer.Dts.Runtime命名空间来处理此代码和以下代码 var app = new Application(); var pkg = app.LoadPackage(pkgLocation, null, true); pkg.ImportConfigurationFile(configfilePath); var pkgResults = pkg.Execute(); if (pk

我正在尝试执行一个远程(驱动程序包),它反过来执行一个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;
}
我面临的问题是,远程驱动程序包有一个与之关联的配置文件,该文件使用相对路径。当我从我的Dev机器执行驱动程序时,我们正在从不同的文件夹结构运行到部署的驱动程序/SSIS包。因此,我可以成功地调用驱动程序,但它没有找到本地包作为它的起点,使用它的本地机器起始地址作为远程服务器上不存在的起点

e、 g

开发机器

C:\Code\TFS\Test\SSIS\assembly.dll

远程机器

C:\Driver\Configs C:\Driver\Packages

当我调用远程计算机时,它以“C:\Code\TFS\Test\SSIS”为起点,然后使用相对路径查找SSIS包,但它找不到它们

有人找到了解决这个问题的办法或其他办法吗


更新时,我通过从系统内部执行psexec来解决问题,该系统允许您设置远程机器的工作目录以正确处理相对路径。然后,我使用Process.Start-ets从我的C代码调用psexec。。。传入命令行执行值



Package.importConfiguration文件将很乐意采用绝对路径(如所示),这将使您避免相对路径问题(只要您知道远程计算机文件夹结构即可).

我不知道这是否有帮助,但您可以将配置文件的路径添加到环境变量中,以便它在您正在使用的所有计算机上都可以不同,那么它将如何工作?我们调用一个远程包并指定一个配置文件位置,但是环境变量会覆盖它吗?谢天谢地,您还可以通过右键单击设计器并选择configuration来指定配置文件的完整路径,这里有两个不同的选项?啊,好吧,最好的方法(我能想到的唯一方法)是使用DtExec执行包,并使用/configuration指定配置文件,这应该很酷,很高兴你来对了,谢谢你的回复,我建议你添加你所做的作为未来用户的答案:-)