前两天有一个很小的需求, 就是把一个view中的数据全部输出到一个平文件(csv)里. 这个需求非常简单, 一个包含几个步骤的ssis package就可以解决问题, 而且因为数据源可控, 甚至连error handle都用不着, 于是我就做了如下图所示的两个控件来实现功能.
但是呢, 一开始跑就发现这个package卡住了, 也不报错, 也不前进, 查看cpu和memory占用率也没有特别的增长...
查看了一下执行结果, 如下图, 也没有发现特别的信息.
后来Google了一下, 开始怀疑是OLE DB SOURCE的问题, 当时的设置是这样的. 很标准的设置, 直接调用表名.
然后我又试了用SQL Command并使用select * 语句, 发现也是一样的问题... 很尴尬.
这时候我想起来一件事, 那就是写stored procedure或者查询时尽量不要用select *语句, 因为会影响性能, 坦白讲我觉得这句话和ssis没多大关系, 或者说和我现在的问题没多大关系, 但既然有了可能性就应该尝试一下. 于是代码变成了下图这样, 然后问题就解决了...
最后的最后我要声明一下, OLE DB SOURCE直接指定表名的设置方法并没什么错误, 至少在输出数据到别的目的地的时候都是没有问题的, 比如数据库.. 只是在输出到平文件我才碰到这个问题, 希望大家小心吧, 如果你遇到不一样的情况也欢迎留言讨论.