SSIS 2012 引入了项目级连接管理器的概念。我在 MSDN 论坛上的参考帖子中看到,用户创建了一个项目级平面文件连接管理器并且无法使用本地变量对其进行配置。假设这是问题所在,我的答案如下。
一个 SSIS 项目通常不止一个包。为了简化生活,SSIS 团队现在允许跨项目共享公共资源,连接管理器就是这些资源之一。
从逻辑上讲,如果一个东西在一个项目中共享,那么只存在于一个文件中的东西如何配置该资源?该配置更改仅在 Package1 执行时有效。当 Package2 触发时,除非将相同的变量和相同的表达式应用于共享资源,否则您将遇到不同的结果。那将是一场维护噩梦,如果您没有强大的配置实践,您可能已经经历过。
如果我在项目级别创建平面文件连接管理器,我只能引用也在项目级别的变量。除了项目级别没有变量。相反,它们被称为参数。
为此,我创建了一个名为SomeProjectParameter
然后我创建了一个包 Package1.dtsx,并添加了 2 个平面文件连接管理器:FlatFileConnectionManagerLocal 和 FlatFileConnectionManagerProject
代替那个包,我还创建了一个名为 SomeLocalVariable 的变量。
此屏幕截图显示我将表达式应用于 FlatFileConnectionManagerLocal 的 ConnectionString 属性。在那里你可以看到包变量,SomeLocalVariable
以及SomeProjectParameter
现在,如果我尝试将表达式应用于项目的连接管理器,您将只有项目参数可供您使用。
有趣的是,您不能将表达式应用于 SSIS 包上下文之外的项目级连接管理器。在您打开 SSIS 包之前,您根本没有可用的编辑器。但是,一旦应用,项目中的所有包都将进行类似的配置。
我想是IDE的怪癖。另外,不要对这些屏幕截图中缺少颜色感到震惊,我正在使用 2012 版本的 SSDT。