Version control 将SSIS包置于源代码管理之下

Version control 将SSIS包置于源代码管理之下,version-control,ssis,Version Control,Ssis,我在Subversion存储库中存储所有SSI包及其配置文件。配置文件几乎总是存储在包所在的同一文件夹中 问题是-SSIS似乎总是将配置文件的路径(保存在包本身中的路径)存储为绝对路径 当其他人签出文件夹时,软件包位于与我在开发PC上的位置不同的位置,则不会检测到配置文件(因为我的绝对路径已存储,而它在其他开发PC上不存在)。因此,另一个开发人员必须删除此配置,并从其本地硬盘上的当前位置再次添加它。然后保存更改的包,这将导致提交新版本。当我从SVN获得该版本时,它将不再匹配我电脑上的本地路径 另

我在Subversion存储库中存储所有SSI包及其配置文件。配置文件几乎总是存储在包所在的同一文件夹中

问题是-SSIS似乎总是将配置文件的路径(保存在包本身中的路径)存储为绝对路径

当其他人签出文件夹时,软件包位于与我在开发PC上的位置不同的位置,则不会检测到配置文件(因为我的绝对路径已存储,而它在其他开发PC上不存在)。因此,另一个开发人员必须删除此配置,并从其本地硬盘上的当前位置再次添加它。然后保存更改的包,这将导致提交新版本。当我从SVN获得该版本时,它将不再匹配我电脑上的本地路径

另一个相关的注意事项是:另一个开发人员可能也想更改配置文件中的值。如果我以后从SVN获得最新版本的一切,软件包将不再在我的电脑上工作

如何解决这些不便?

我在我的项目文件夹下添加了一个名为“config”的文件夹,将其添加到源代码管理中,并在该文件夹中保存配置文件。如果愿意,还可以将其添加到SSIS项目中

我认为这是一个很好的解决方案,因为每个人都可以拥有这个文件夹并下载配置文件


部署包时,它将从部署清单中通知的位置读取配置文件,这样此解决方案不会影响您的开发

另一个解决方案是将您的配置保存在数据库中,并使用环境变量作为第一个配置,以告诉它要查看哪个数据库,这就是我们要做的。我们有脚本为源代码管理中的每台服务器填充SSIConfig,但是包在我们使用的环境变量中使用数据库的实际表数据

任何听过我的SQL星期六演讲的人都知道我不太喜欢XML,这就是原因之一。在不同位置使用XML配置的一个技巧是使用环境变量(间接配置)将SSI定向到可以查找该资源的位置。这种方法最大的缺点是,您通常需要为每一组配置文件创建一个环境变量,或者创建一个庞大的、嗡嗡作响的.dtsconfig文件,这对于版本控制来说会很痛苦

如果必须进行XML配置,我更喜欢的选项是删除“可变性”。开发人员和管理员聚在一起,每个人都同意“SSI用于保存配置文件的地方都会有一个文件夹,该文件夹的位置是X”,然后只需解决X的问题。在以前的工作中,我们使用了D:\SSIData\configs


@HLGEM的配置表方法是我最喜欢的SSIS配置方法(直到2012年及其项目部署模型,其中配置是一种完全不同的动物)

我在我的OP中提到过-我已经在SVN中存储了配置文件。把它放在子文件夹并不能解决我提到的任何问题。哼,你们不是都有一个标准文件夹来存储你们的项目吗?