SSDT-BI之七:循环任务(容器)

这篇博客介绍一下循环任务的一种:文件循环。项目背景是这样的:升级数据库中,我们需要升级许多的View,Function,SP等,这些文件众多,所以期望能够把文件统一的放在一个或者几个文件夹中一起执行。这种需求,文件循环任务就派上用场了。

1,如下图,容器下有两种循环,我们选择Foreach循环容器,For循环容器请自行探索。

image

2,再看Package工作区,拖动箭头位置可以将两个任务连接在一起,组成一个执行序列。

image

image

3,双击Foreach循环容器任务后,打开Foreach循环容器编辑器,左侧选择集合,右侧Enumerator 选择Foreach文件枚举器。

image

4,点击Expressions右侧的按钮,打开属性编辑器,属性选择Directory,表达式就选择我们之前创建的变量即可,这个变量之前我们是指向Script文件夹。

image

5,然后我们再这样设置一下,就能够遍历Script文件夹以及子文件夹下的所有sql文件。

image

经过以上步骤,现在的循环任务已经能够遍历文件,但是要怎么执行我们遍历的文件呢?

1,需要新建一个变量,用来存放每次循环得到的文件名,例如:File_Script。

2,在循环编辑器的窗口,左侧选择变量映射,右侧变量选择我们刚刚新建的变量,这样每次循环文件名都会赋值给变量File_Script。

image

那么又怎么使用这个变量呢?

以前的博客有提到过,执行sql文件需要文件连接,那么我们能不能创建一个文件连接,文件的ConnectionString就选择File_Script呢?想到的就要去试试,不试一试就可能错过你这一辈子最重要的东西。如下图,我们确实创建了这么一个文件连接。

image

但是要注意File_Script这个变量的作用域,它虽然是在Package中创建的,但是它只有在循环中才赋值,所以相当于只有在循环内部才能取得一个有效的文件路径,也就是说利用这个变量创建的文件连接只能在循环任务的内部使用。

如下图,我们在循环任务内部加入一个执行sql任务,并且选择刚刚创建的文件连接,这样整个Script文件夹下的sql文件都会被执行了。

image

请注意:在循环任务中,如果有一次循环出错,循环任务会暂停执行。

转载于:https://www.cnblogs.com/marsyan/p/4539902.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值