SQL2005 SSIS 在指令碼元件中訪問包變數

2021-04-01 11:53:49 字數 1311 閱讀 6764

要想在指令碼元件中訪問包變數,首先必須設定指令碼元件2個屬性的值,如下

readonlyvariables

readwritevariables

這2值指定了哪些變數可以訪問,哪些變數可以改寫(如有多個變數則用逗號分隔),如果你沒有指定上面2個屬性的值,則不能在指令碼元件的**中訪問包變數

下面我舉乙個從檔案中載入內容到包變數的乙個例子

1、首先我們定義2個變數 filename 和 filecontents ,並指定其型別為 string

2、拖曳乙個指令碼元件到控制面板上,並設定 readonlyvariables和readwritevariables 屬性的值分別為 filename 、filecontents

3、設計指令碼元件的**,如下 

public sub main()

dim errorinfo as string = ""

dim contents as string = ""

contents = getfilecontents(dts.variables("filename").value, errorinfo)

if errorinfo.length > 0 then

msgbox(errorinfo, msgboxstyle.critical, "error")

dts.taskresult = dts.results.failure

else

msgbox(contents, msgboxstyle.okonly, "file contents")

dts.variables("filecontents").value=contents

dts.taskresult = dts.results.success

end if

end sub

public function getfilecontents(byval filepath as string, optional byval errorinfo as string = "") as string

dim strcontents as string

dim objreader as streamreader

tryobjreader = new streamreader(filepath)

strcontents = objreader.readtoend()

objreader.close()

return strcontents

catch ex as exception

errorinfo = ex.message

end try

end function

SSIS 調式指令碼元件

ssis比dts的日誌架構更加強大,你再也沒有必要寫入乙個msgboxes來獲得你所需要的日誌資訊 因為你的指令碼元件是繼承於乙個有log方法的script ponent元件,這個方法允許你返回乙個訊息到ssis包的日誌中,它會觸發script ponentlogentry的呼叫,例如下面 vb d...

在SQL2005 輕鬆配置SSIS包

在以前的dts中,在包的開發 測試 發布遷移過程中有很多問題,典型的問題是你必須手動的確定包中的所有連線都指向乙個實際存在的物理伺服器 幸運的是,現在在ssis中提供了這種問題的解決方案,那就是包配置 包配置是乙個動態改變你的ssis物件和連線屬性的一種機制,它把這些動態可以改變的資訊儲存在包的外部...

在SQL2005 輕鬆配置SSIS包

在sql2005 輕鬆配置ssis包 在以前的dts中,在包的開發 測試 發布遷移過程中有很多問題,典型的問題是你必須手動的確定包中的所有連線都指向乙個實際存在的物理伺服器 幸運的是,現在在ssis中提供了這種問題的解決方案,那就是包配置 包配置是乙個動態改變你的ssis物件和連線屬性的一種機制,它...