什么会导致SSIS忽略包配置连接?

时间:2015-08-27 14:32:07

标签: sql sql-server ssis

我有一个非常简单的SSIS包,它在Connection Manager部分中定义了2个连接。 MS Access数据源和MS SQL数据源目标。所有这个包都是在SQL目标中截断一个表,并将数据从MS Access导入到SQL表中。这在VS2013的开发期间按预期工作。

现在,我还为该软件包启用了软件包配置,并在C:驱动器根目录下的文件夹中有几个XML配置文件(每个连接1个)。配置文件连接因它们所在的服务器而异,但两个服务器上都存在文件夹结构,因此程序包可以针对运行它的服务器执行。

我已选中此框以启用程序包配置并将程序包部署到2个不同的服务器。 1用于开发,另一用于QA。当我通过我的Development Server上的SSMS Integration包执行来执行包时,该包使用Development表。但是当我在QA环境中执行相同的包时,它也会使用Development表。

由于开发连接是通过连接管理器嵌入在包中的连接,因此它(可能无论如何)显示包正在使用嵌入式连接并忽略配置文件。

我已在“配置”部分的“执行包实用程序”中明确添加了配置文件的路径,以查看它是否有任何区别,但结果是相同的。配置文件未得到确认。因此,包似乎再次使用配置管理器中定义的嵌入式连接。

我想我“可能”能够在Connection Manager部分中从包中删除Connections并在设计时关闭验证,然后再次部署以强制包使用Config文件但不是似乎是最好的方式和最好的黑客;只要它可以工作。

不是我认为它应该有所作为,但提供更多细节,这里有点关于我的服务器配置:

开发 - SQL 2014 [ServerName] 质量保证 - SQL 2014 [ServerName] [InstanceName]

我不记得曾经有这个问题,因此我发布的原因。

1 个答案:

答案 0 :(得分:2)

好的,因为我正在努力克服一条死路线;我希望能早日获得答案。但由于情况并非如此,并且因为我之前没有看到这个问题的变化而没有明确的答案(至少为了满足这种情况),我进行了一些测试并将其发布给其他可能也需要的人这些信息。

即使在SSIS包中启用了包配置,以下条件也将忽略配置文件的使用。这些调查结果基于实际测试,并且对于SQL 2014确认也是如此,尽管先前版本也可能适用。

免责声明:这些测试主要关注配置文件,因为它们与实际的服务器连接有关。 (例如连接字符串)而不是任何其他变量,尽管可以想象配置文件中的任何其他值也会受到影响。

  1. 在连接到Integrated Services Component并选择Run Package时,从SSMS内执行包。注意到的行为是,在部署到服务器之前获取的任何连接值都是将要使用的;与配置文件无关

    注意: 即使在执行之前在“配置”部分中添加了配置,也是如此。虽然提到配置未导入且无法编辑;事实是他们在测试期间既未使用过。

  2. 如果SQL作业的类型为SQL Server Integration Services包,并且实际上没有将配置文件引用添加到“配置”选项卡,那么作业将在上次在BIDS中的最后一次构建期间使用的值下执行的值部署(嵌入值)

  3. 如果包使用了多个配置文件,但在作业的“配置”选项卡中省略了一些配置文件;作业将使用指定的配置文件,但默认为开发(嵌入值)中使用的最后一个值,用于作业上下文中不存在的值

  4. 其中一些行为并不是很明显,而且当有人希望遵循大多数在线教程的规则来使用包配置文件时,我认为这可能是一个令人沮丧的难题。会有更直接的预期结果。

    我知道这是一项耗时的测试任务,以确定我的根本原因,虽然我不是专家;我与SSIS的新手相距甚远。

    无论如何,我希望这可以帮助其他人从事数小时的工作和调查。