我正在尝试在 SSIS 2008 中创建一个自定义脚本,它将遍历选定的输入列并将它们连接起来,以便它们可用于创建 SHA1 哈希。我知道可用的自定义组件,但我无法在工作时将它们安装在我们的系统上。
虽然这里提出的示例似乎可以正常工作http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/69766/当我测试这个时,我只选择了少数而不是所有列,但我得到了奇怪的结果。如果选择的列是按顺序排列的,该脚本似乎才起作用。即使它们是有序的,在如此多的记录或下一个缓冲区之后生成不同的 MD5 哈希,尽管在我的测试数据中行完全相同。
我已经尝试修改上一个链接中的代码以及这些文章,但到目前为止还没有任何乐趣。
http://msdn.microsoft.com/en-us/library/ms136020.aspx
http://agilebi.com/jwelch/2007/06/03/xml-transformations-part-2/
作为起点,这可以很好地显示我选择用作输入的列名
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
For Each inputColumn As IDTSInputColumn100 In Me.ComponentMetaData.InputCollection(0).InputColumnCollection
MsgBox(inputColumn.Name)
Next
End Sub
在此基础上,我尝试使用以下代码获取值:
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Dim column As IDTSInputColumn100
Dim rowType As Type = Row.GetType()
Dim columnValue As PropertyInfo
Dim testString As String = ""
For Each column In Me.ComponentMetaData.InputCollection(0).InputColumnCollection
columnValue = rowType.GetProperty(column.Name)
testString += columnValue.GetValue(Row, Nothing).ToString()
Next
MsgBox(testString)
End Sub
不幸的是,这不起作用,我收到以下错误:
尽管我对 VB.net 尤其是 SSIS 中的 VB.net 的了解有限,但我确信我正在尝试做的事情很容易实现,我正在努力。我可以单独定义列名,如下所示http://timlaqua.com/2012/02/slowly-changeing-dimensions-with-md5-hashes-in-ssis/虽然我想尝试一种动态方法。