Tam*_*ila 3 sql ssis ssis-2012
我知道这个话题已被多次讨论,但我有一点需要注意,我似乎无法找到答案.
我有几个包都有ActivityDate变量.默认情况下,软件包需要在昨天的日期运行.
有两种可能的情况.
场景1 - 从主包调用包.在这种情况下,ActivityDate在主包中设置一次,到昨天的日期,然后传递给子包.
场景2 - 程序包独立运行.在这种情况下,ActivityDate在每个子包中设置,也通过表达式设置为昨天的日期.
在SQL 2008中,它很容易 - 每个子包中的变量通过方案1的包配置设置,但在方案2中运行时使用表达式.
我不清楚如何在2012年完成此任务.没有更多的包配置,所以我需要在子包中创建包参数,然后从父链接链接到它.但参数不使用表达式.因此,如果我在子包中创建ActivityDate参数,那么我可以从父级链接到它(对于场景1),但我无法为它创建表达式(对于场景2).如果我只有ActivityDate变量,那么我可以创建一个表达式,但不能从父级链接到它.
那么我如何让这两个场景在2012年运作?
请帮忙!
首先,参数绑定可以使用表达式:
其次,不是包配置,而是具有执行相同基本功能的环境变量,在运行时动态设置参数值.基本设置是:
无论如何,你要完成的是什么并不完全清楚 - 默认情况下使用父活动日期,但允许使用参数覆盖它?或者,如果您独立于父级调用子包,仍然提供昨天的值?
所以,我认为这可以实现你想要的:
(@[$Parameter::RunningFromMaster] ? @$Parameter::MasterActivityDate : DATEADD("d",-1, GETDATE() ) )当您从master运行时,User :: ChildActivityDate将只传递传递给MasterActivityDate参数的任何值.当你的子包独立运行时,它只会使用表达式来提取昨天的日期(随意修改表达式以满足你的特定需求.)
此外,如果有人问,我使用了一个布尔值,因为DateTime参数总是默认为GETDATE(),所以你必须建立复杂的条件来确定它们是否已被设置.
| 归档时间: |
|
| 查看次数: |
26166 次 |
| 最近记录: |