MSDN上关于Create Custom SSIS Data Flow/Control Flow Task的文档还是过于粗糙,没有多少指导价值。 不过微软提供的samples(SQL Server 2005 Samples and Sample Databases)还真是好东西,里面的sample tasks简单易懂,很容易跟着上手,另外还详细说明了要怎么将这些custom tasks部署到BIDS的toolbox上,非常实用。你可以在http://www.microsoft.com/downloads/details.aspx?familyid=e719ecf7-9f46-4312-af89-6ad8702e4e6e&displaylang=en#filelist 下载到这些samples.
我尝试着create了一个custom的Data Flow Task(custom PipelineComponent),结果不错,不过还是有两点感到不是很爽:
1. SSIS现阶段还不允许你在custom component(至少custome PipelineComponent是这样)里添加readonly的属性,不知道以后会不会增加这个support。
2. BIDS会有两个进程来进行design time validation,一个是属于BIDS编辑器的,另一个是属于debug进程(用来在BIDS里运行package)。它们会分别用不同的component实例对package进行design time validation,它们不共享变量状态。也就是说,如果你在design time需要update数据库一类的资源,即使你用了flag来保证这个update在每次执行只做一次(可以在Cleanup方法里清除flag以确保下一次执行会再一次update),数据库也会被意外的update两次。如果直接执行编译好的package而不是在BIDS里打开并执行它,则不会有这个问题发生。