代码之家  ›  专栏  ›  技术社区  ›  John Lemp Chris Heald

是否可以使用SSIS包DTSConfig文件的相对路径?

  •  19
  • John Lemp Chris Heald  · 技术社区  · 17 年前

    我正试图使我们的SQL Server Integration Services包尽可能地可移植,但有一件事阻止了这一点,那就是到配置的路径始终是绝对路径,这使得测试和部署变得很头疼。有什么建议可以让这个更易于管理吗?

    另一个问题是,当另一个开发人员将包从源代码管理中取出时,路径是特定于开发人员计算机的。

    4 回复  |  直到 7 年前
        1
  •  14
  •   Malik Daud Ahmad Khokhar    17 年前

    如果您尝试使用Visual Studio执行包,那么配置文件路径将在其中进行硬编码。因此,如果您移动您的项目,您将需要更改包设置中的路径。为了避免这种情况,可以使用环境变量选项来存储配置文件路径。那么你只需要改变它。

    但是,对于测试和部署,您可能应该使用dtexec实用程序来执行包。为此做一些批处理文件。每个不同的环境最好有一个。这里的配置文件路径可以是相对的。

    dtexec /File Package.dtsx /Conf configuration.dtsConfig"
    

    如果你的软件包在文件系统中的话。您还可以将它们存储在SQL Server中。您还可以将配置存储在SQL Server中,这样可以提供灵活性。

        2
  •  2
  •   8128 SarangArd    7 年前

    经过几个小时的努力,我找到了一个解决办法。 here (不是最好的,但很管用)

    1. 将配置文件(dtsconfig文件)定位在与解决方案文件(.sln文件)相同的目录中。
    2. 始终通过双击解决方案文件(.sln文件)打开解决方案。这会将_工作文件夹_秷设置为解决方案所在的位置,您的配置文件将被正确读取。

    否则,相对路径对我不起作用。

        3
  •  1
  •   Debarchan    14 年前

    请查看免费实用程序,该实用程序可以在不进行出价的情况下编辑SSIS配置文件路径: http://ssisconfigeditor.codeplex.com/

        4
  •  0
  •   Mick    12 年前

    对于这些问题,我的库存标准技巧是映射驱动。

    或者使用 mapped network drive 或通过使用 Subst (两种方法都可以互换)。

    例如,将包的位置映射到n:\n,然后在包内使用路径,使用n:\myparentpackage.dtsx、n:\mychildpackage.dtsx。包可以在完全不同的驱动器上,在不同的计算机上的不同文件夹中,一旦您将包位置映射到n:,它就会工作。\

    我通常在项目文件的旁边放一个脚本来映射驱动器,它映射驱动器,这样它就可以很容易地运行。如果您在Vista-Win8上使用SUBST,那么可以将其映射为提升的和非提升的。

    我对Visual Studio项目中的文件引用使用相同的方法。这种方法的唯一问题是,您在开发环境中解决了太多的问题,并且驱动器号将用完。

    推荐文章