我有一个关于如何在SSIS中设置优先约束的问题。
我在包中有以下流程:
问题: 如果其中一个脚本没有运行,那么下一个脚本也不会(因为约束永远不会得到评估)。例如,对于data =" 1011",脚本3和4永远不会运行,因为数字2从未运行...
你知道更好的方法吗?
将SQL Server 2008与BIDS一起使用
答案 0 :(得分:2)
我同意@Iamdave的指示,即在每个脚本中修改脚本是否应该执行检查,而不是使用表达式约束。
但是,因为有人可能想要使用数据流任务执行此操作,或者这里有一些方法可以使用SSIS组件。您的问题是您希望有条件地执行任务,但无论该任务是否被执行,您都希望有条件地执行另一个任务。通过将每个脚本任务放在序列容器中,序列容器之间的优先级将始终使另一个容器执行,只要前一个容器没有失败或没有表达式作为约束。但是一旦进入容器,您需要能够设置条件优先级。您可以通过在脚本任务之前添加某种虚拟任务并在该优先级上添加约束来实现此目的。
答案 1 :(得分:0)
在脚本中添加一些条件代码。
例如,在脚本任务1的开头:
if firstcharacter(Variable) = 1
do things
else
do nothing
然后在脚本任务2中:
if secondcharacter(Variable) = 1
do things
else
do nothing
并确保所有数据都通过,只有在符合变量中的正确字符时才进行转换。