2011年6月8日 星期三

[BUG]衍生資料行裡的變數竟只會帶初使值?

  最近有人在無名問我SSIS裡變數的問題,他是用指令碼元件去取得變數,最後將變數塞回到文字檔裡,但結果竟然為0,原以為是對方有地方沒設定好,結果我試了竟然也一樣
  剛好上胡百敬老師的SSRS的課,順便問了老師這問題,老師幫忙試了也是一樣,看來是衍生資料行這東西搞鬼,不知為什會取得變數的初始值,後來上網查了一下,這篇也有類似的問題,SSIS - user variable used in derived column transform is not available - in some cases,不只我一人遇到,看來應該是Bug啊

圖(一)
  如圖(一)封裝裡有個全域變數varCnt初始值為9,裡面有一個資料流程工作與指令碼工作,指令碼工作的用途是在最後秀varCnt的值而已,而在資料流程工作中會利用指令碼元件取得某個資料表筆數為701再塞給varCnt,再將varCnt的值再輸出給資料行outCnt,此時varCntoutCnt的值都是701囉,但是接著利用衍生資料行加入個新資料行vCnt,這個新資料行的值是變數varCnt,你認為vCnt值應是多少呢?應該是帶更新過的varCnt701,但是竟然是帶初使值9耶,如下圖(二)

圖(二)
  很神奇吧,最後指令碼工作明明也是秀701,但在衍生資料行裡卻會抓預設值9,非常詭異

  最後我在SQL 2005、SQL 2008與SQL 2008 R2都建了一樣的封裝來試試,都有一樣的問題喔,給各位參考

0 意見:

張貼留言