我試圖在SSIS 2008中創建一個自定義腳本,它將循環選定的輸入列並將它們連接起來,以便它們可用於創建SHA1哈希。我知道可用的自定義組件,但我無法將它們安裝在我們的系統上。SSIS自定義腳本:在列上循環以連接值
雖然這裏提出的例子似乎工作正常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的,特別是在VB.net SSIS的知識,我掙扎。我可以單獨定義列名,如http://timlaqua.com/2012/02/slowly-changing-dimensions-with-md5-hashes-in-ssis/所示,但我想嘗試一種動態方法。
幾乎所有NullReferenceException的情況都是一樣的。請參閱「[什麼是.NET中的NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)」的一些提示。 –