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

3
我有一个非常简单的SSIS包,在连接管理器部分定义了两个连接。一个是MS Access数据源,另一个是MS SQL数据源目标。这个包只是在SQL目标中截断表格,并将数据从MS Access导入到SQL表格中。在VS2013开发期间,这一切都按预期工作。
现在,我还启用了该包的包配置,并在C:驱动器的根目录下有几个XML配置文件(每个连接一个)。配置文件连接基于它们所在的服务器而不同,但文件夹结构存在于两个服务器上,因此该包可以针对其运行的服务器执行。
我已经选中了启用包配置并将该包部署到两个不同的服务器上。其中一个用于开发,另一个用于QA。当我通过SSMS集成包执行在我的开发服务器上执行包时,该包利用开发表。但是,当我在QA环境中执行相同的包时,它也使用开发表。
由于开发连接是通过连接管理器嵌入在包中的,因此看起来(可能)该包正在使用嵌入式连接并忽略配置文件。
我已经尝试在配置部分的Execute Package实用程序中明确添加了配置文件的路径,以查看是否有任何区别,但结果是相同的。配置文件没有被承认。因此,似乎该包正在使用在配置管理器中定义的嵌入式连接。
我想我“可能”能够从连接管理器部分中删除连接,并在设计时关闭验证,然后再次部署,以强制该包使用配置文件,但这似乎不是正确的方法,最多只是一个hack。而且,即使这样做,也不能保证它会起作用。
虽然我认为这不应该有任何影响,但为了提供更多细节,这里有一些关于我的服务器配置的信息:
开发-SQL 2014 [ServerName] 质量保证-SQL 2014 [ServerName] [InstanceName]
我不记得以前遇到过这个问题,因此我才发帖问。

我的第一个猜测是您在设置配置使用时犯了一些错误,只是还没有发现。 - Tab Alleman
1个回答

2

好的,由于我正在面临截止日期的压力; 我希望能够尽快获得答案。但由于这不是情况,并且因为我以前看到过类似的问题,没有明确的答案(至少不能满足这种情况),所以我进行了一些测试,并将此发布给其他可能需要此信息的人。

以下条件将忽略配置文件的使用,即使启用了包配置也是如此。这些发现基于实际测试,并确认对SQL 2014有效,尽管之前的版本也可能适用。

免责声明: 这些测试关注配置文件与实际服务器连接的相关性。(如:连接字符串)而不是任何其他变量,尽管配置文件中的任何其他值也可能受到影响。

  1. 在连接到集成服务组件并选择运行程序包的情况下,在SSMS内执行程序包。注意行为是,无论配置文件如何,都将使用在部署到服务器之前获取的连接值。

    注意: 即使在执行之前在 Configurations 部分添加了配置,这仍然是正确的。尽管有提到配置未被导入并且它们无法被编辑;事实上在测试期间它们既未被使用。

  2. 如果 SQL 作业属于 SQL Server Integration Services Package 类型,并且配置文件引用实际上没有添加到 Configurations 选项卡中,则作业将在部署之前使用的任何值下执行(嵌入式值)。

  3. 如果程序包使用多个配置文件,但在作业的 Configurations 标签中省略了一些文件,则该作业将使用指定的那些配置文件,但对于那些在作业环境中不存在的文件,默认使用开发时使用的最后一个值(嵌入式值)

其中一些行为并不是非常明显,我想当有人期望遵循大多数在线教程使用包配置文件的规则时,这可能是一个令人沮丧的难题;他们会预期更直观的结果。

我知道对我来说,识别根本原因需要耗费大量时间进行测试,尽管我不是专家,但在 SSIS 中我肯定不是新手。

无论如何,我希望这可以帮助其他人节省工作和调查的时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接