最近用SSIS Package解了一个bug,第一次使用这项技术,习惯性记录。
SSIS,即SQL Server Integration Services project;若完全安装了SQL Server,可以在SQL Server Business Intelligence Development中创建这种类型的项目。
使用背景:账单中[已付金额]一项有误,代码逻辑已经调整。需要罗列出所有金额有误的账单,作为Data Fix.
账单是以xml形式的字符串存在varchar(max)的数据列中。我们很容易得到当前账单[已付金额]的值;但是正确的,即按照最新代码逻辑计算出来的[已付金额],是需要调用很多存储过程,有复杂的业务处理流程。所以,通过select语句写个sql脚本,我们很难把8个partition上的错误账单都罗列出来。如下图,SSIS Package在此时就大放异彩了:)
Derived Column
在制定Work Flow时要注意Input-Output的Mapping关系。上图中,[Orders]是一个存储过程的结果作为数据源(Input),里面没有Payment这一项;而在工作流下一个节点中,是通过调用另一个存储过程得到正确的Payment值,即Output中有Payment。这时就需要在两者之间有一个浮点类型的列。
Data Conversion
字段InvoiceNumber,在多个存储过程中都有定义,作为Input参数数据类型可能不同。若没有Data Conversion,Work Flow会报错。