簡體   English   中英

SSIS包失敗,因為“腳本任務由於未預編譯而失敗”

[英]SSIS Package failing because “script task is failing because the script is not precompiled”

我開發了一個非常簡單的SSIS包(在VS2005中,帶有.Net Framework V 2.0.50727 SP2),該包獲取要發送電子郵件的用戶列表,啟動for-each循環容器,然后執行腳本任務以檢索用戶特定的數據並通過電子郵件將其發送給用戶。 當我在開發箱上運行該程序時,一切正常,並可以正常運行。 但是,當我將程序包部署到運行的生產服務器(Windows NT 5.2(內部版本3790:Service Pack 2)上的Microsoft SQL Server 2005-9.00.5000.00(X64)標准版(64位))時,任務失敗。

原始錯誤消息是:

以用戶身份執行:xxxxx。 Microsoft(R)SQL Server執行軟件包實用程序版本9.00.5000.00(用於64位)代碼:0x00000009源:PackageName說明:該任務無法在64位環境中執行,因為腳本未預先編譯。 請打開該選項以在任務編輯器中預編譯腳本。 結束錯誤...錯誤DTExec:程序包執行返回DTSER_FAILURE(1)。

經過廣泛研究后,互連網建議我嘗試:

  1. 通過更改SQL作業中的執行屬性並將RunIn64BitMode屬性從true更改為false,以32位運行程序包
    • 失敗,因為“選項“ / X86”無效。“
  2. 安裝Microsoft修補程序
    • 這不適用,因為我已經在SP2上運行

因此,在進行更多研究之后,我發現需要打開“請打開在任務編輯器中預編譯腳本的選項”。 消息來源:ssis-dtsx DOT blogspot DOT com / 2010/03 / cannot-execute-in-64-bit-environment.html,其中包括:

  • 確保每個腳本任務的PreCompile = True
  • 打開腳本任務編輯器,切換到“腳本”選項卡,並確保PrecompileScriptIntoBinaryCode = True
  • 單擊設計腳本以打開代碼編輯器(Visual Studio for Applications),然后使用“文件”>“關閉並返回”選擇它(VSA將重新編譯二進制代碼並將其存儲在程序包中)。
  • 建立專案並復制到目標位置

但是,當我執行包時,我立即收到錯誤消息:

以用戶身份執行:xxxx。 ... 0.5000.00(用於64位代碼:0x00000008源:PackageName)說明:該任務配置為預編譯腳本,但找不到二進制代碼。 請通過單擊“設計腳本”按鈕訪問Script Task Editor中的IDE,以生成二進制代碼。 結束錯誤代碼:0x00000008源:GET PO infor和電子郵件說明:腳本無法重新編譯或運行:檢索具有CLSID的組件的COM類工廠...

因此,我的最后一步是將SSIS pkg中的DelayValidation屬性從False更改為True,進入設計腳本以對其進行重建,然后重新部署,然后重新運行,我仍然遇到相同的錯誤。

在搜索錯誤時,我被定向到Microsoft HOT FIX ,它建議我下載另一個修補程序。

我尚未下載此修補程序,並且如果可以避免的話,則不願這樣做(我們的操作團隊不喜歡在生產服務器中午運行修補程序)。

轉到程序包,打開腳本組件,然后在Visual Studio中(同時查看代碼)單擊BUILD。 如果沒有問題阻止編譯,將編譯該軟件包。 然后保存,返回並確保您單擊“確定”而不是“取消”,如果單擊“取消”,則整個操作將恢復原狀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM