微軟BI 之SSIS 系列 - MVP 們也不解的 Scrip Task 腳本任務中的一個 Bug

開篇介紹

前些天本身在整理 SSIS 2012 資料的時候發現了一個功能設計上的疑似Bug,在 Script Task 中是能夠給只讀列表中的變量賦值。我記得之前在 2008 的版本中爲了弄明白這個配置,還特地測試過這個細節,獲取錯誤並理解了這個功能。可是如今回去再次測試 2008 的版本時,發現這個功能在 2008 中其實也是錯誤的,把我印象中的測試結果徹底給推翻了,因此到如今已經搞不清楚我當時究竟是若是得出這個錯誤的。

疑似功能 Bug 描述

在 SSIS 包中定義了用戶自定義變量 - PV_CURRENT_DATE,而且把它們放置在 ReadOnlyVariables 中,按照咱們的一般理解那麼這些變量在 Script Task 中應該就是隻讀性質的,不能賦值給他們。若是須要讀寫一個變量,那麼這個變量就應該放到 ReadWriteVariables 中。
在代碼中能夠看到 PV_CURRENT_DATE 這個變量被賦值了。
按道理應該報錯的,包執行失敗的,結果倒是執行成功!
那麼在 SSIS 2012 中要如何解決或者描述這個問題呢? 測試一下,修改變量 PV_CURRENT_DATE 將它的 ReadOnly 屬性修改成 True,標明是隻讀,這個時候纔會出錯。
經過斷點調試就會發現這個錯誤的緣由就是 : Error trying to write to a read-only variables,試圖向只讀的變量寫值。
惟一能解釋的通的就是在 SSIS 2012 中的 ReadOnlyVariables 列表中出現的就只能是 ReadOnly = True 的變量,在 ReadWriteVariables 是能夠看到 ReadOnly = False 或者 ReadOnly = True 的全部變量。若是本意是這樣的話,我以爲這種設計顯得很是的彆扭,而且 ReadOnlyVariables 這個很容易給人誤導,讓人認爲是放入其中的變量在 Script Task 中就是隻讀的!

MSDN 論壇

我把這個問題也貼在了 MSDN 論壇 - Is it a bug - SSIS 2012 ReadOnlyVariables in Script Task doesn't work
回覆帖子的兩個 MVP  SSISJoost 和  Visakh16 也都重現了這個問題,也認爲這是一個設計上的 Bug。
可是我最後仍是本身否認了本身,只能說是疑似 Bug,可是從這個角度來考慮,也確實可能就是 By Design,如下是個人我的觀點: 
關於這個問題,我也提給了微軟,能夠訪問   SSIS 2012 ReadOnlyVariables in Script Task doesn't work  來關注微軟技術團隊最終的確認。
對於這個問題,包括上面兩個很是 NB 的 MVP 以及被我挖出來的這個帖子  SSIS Script task 'ReadOnlyVariables'  中的另外兩個牛人 MVP  ArthurZ 和  Reza Raad 也一樣對這一個特性持有疑似 Bug 的觀點。
 
若是這麼多人也都這麼認爲的話,即便不是 Bug,這個設計也是存在問題和缺陷的,由於着着實實誤導了不少人。

PS

MVP Reza Raad 的表明做 《Microsoft SQL Server 2012 Integration Services: An Expert Cookbook》

其它有關 Script Task 腳本任務的文章

  • ArthurZ (MVP,MCDBA, MCAD, MCTS and MCITP)
  • Reza Raad (MVP, MCP, MCTS and MCI《Microsoft SQL Server 2012 Integration Services: An Expert Cookbook》做者)
  • SSISJoost (MVP, SSIS)
  • Visakh16 (MVP, SSIS,SSAS,SSRS)

微軟已經確認這是一個 Bug

更新自 2014年12月15日,看到微軟已經肯定了這是一個 Bug,而且從 2008 R2 版本中就存在這個 Bug 的。html

更多 BI 文章請參看 BI 系列隨筆列表 (SSIS, SSRS, SSAS, MDX, SQL Server)  若是以爲這篇文章看了對您有幫助,請幫助推薦,以方便他人在 BIWORK 博客推薦欄中快速看到這些文章。sql

相關文章
相關標籤/搜索