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

标签 c# ssis relative-path

我正在尝试执行一个远程(驱动程序包),而该远程(驱动程序包)又会执行一个 SSIS 包。

我正在为此代码和下面的代码使用 using 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:\Driver\Configs C:\Driver\Packages

当我调用远程机器时,它以“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 所示),这将让您避免相对路径问题(只要您知道远程计算机文件夹结构)。

关于c# - 在 C# 中使用相对路径的 SSIS 远程执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5973328/

相关文章:

php - 在 PHP 中检查相对与绝对路径/URL

jquery - jquery中的绝对路径和相对路径

c# - 获取 Oracle 数据库名称

c# - DataGridColumnHeader 中的第一个下划线被删除

sql-server - 在SSIS中检索失败的软件包和错误消息

utf-8 - SSIS - 平面文件始终采用 ANSI 编码,从不采用 UTF-8 编码

c# - C# 中的 Agent/MailboxProcessor 使用新的 async/await

c# - 有一种方法可以通过自动创建使用引用来创建代码片段吗?

ssis - 在 SSIS 中压缩文件夹的内容

php mkdir windows 相对路径