【问题标题】:SSIS executing .Net Console Job - relative pathsSSIS 执行 .Net 控制台作业 - 相对路径
【发布时间】:2016-06-28 14:44:21
【问题描述】:

我编写了一个 .net 控制台应用程序,它使用 XML 文件将一组变量加载到应用程序中。

在测试期间,我使用存储在共享驱动器上的 UNC 文件路径对 .xml 文件的绝对路径进行了硬编码。 \\sharepath\config.xml

然而,现在,我们希望从 SSIS 调用 application.exe 文件,我们完全可以做到,我们继续在应用程序中使用硬编码路径,但是当我将其更改为相对路径 (config.xml)它失败了,因为它找不到配置文件。

有人知道为什么这不起作用吗? - 我已经阅读了一些关于 SSIS 工作目录的内容,但不确定是否由于某种原因,它是否在与使用 ssis 包中的执行应用程序任务指定的位置不同的位置运行 .exe 文件?

我基本上是在尝试避免将文件路径硬编码到应用程序中,以便我们可以将其更改为将来更改的文件共享名称。

谢谢

【问题讨论】:

  • all 应用程序中,您必须设置工作目录。如果您在C:\ 并执行c:\somefolder\myapp.exe,您的工作目录是c:\ ,而不是c:\somefolder。最好的选择当然是将文件的路径作为参数传递,而不是对其进行硬编码。无论如何,请在Execute Task 步骤中设置应用程序的工作目录
  • 您好 Panagiotis,感谢您的输入,您是正确的,它是应用程序用作相对路径的工作目录。当我们将配置文件放在这个文件夹中时,它会读取它并按预期工作。 - 无法接受您在评论区的回答。

标签: .net xml ssis


【解决方案1】:

我也被这个咬了。 工作目录不是 dtsx 文件所在的位置,而是 DETEXEC.exec(或 DTEXEC_Util.exe)所在的位置。 这将是类似的地方 C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn 我怀疑你想把你的配置放到这个位置...... 最好的办法是使用 XML 文件的位置设置 SSIS 配置,然后在加载文件时使用它(那里有很多示例......)

【讨论】:

  • 谢谢,我们通过将配置 xml 放在执行流程任务中定义的自定义工作文件夹中解决了这个问题。不过,我们不想通过将变量传递给应用程序来使其复杂化。
猜你喜欢
  • 2012-05-12
  • 2016-03-12
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 2010-09-21
  • 2023-03-26
相关资源
最近更新 更多