您可能無法執行包含指令碼工作或指令碼元件的 SQL Server 2005 整合服務套件

文章翻譯 文章翻譯
文章編號: 931846 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

在 Microsoft SQL Server 2005 中,您可能無法執行 SQL Server 2005 整合服務 (SSIS) 封裝包含指令碼工作或指令碼元件。此外,這些指令碼可能無法正確運作當您試著要編輯指令碼。執行下列作業系統的電腦可能會發生這個問題:
  • Windows Vista
  • 已經有 Microsoft.NET Framework 2.0 Hotfix 建置安裝 2.0.50727.832 稍後的 Windows 作業系統
這些元件的方式概觀交互操作,請參閱 < 其他相關資訊 > 一節。

比方說如果下列情況成立,就會發生這個問題:
  • 您在 Windows Vista 電腦上安裝 SSIS 開發工具。或者,執行已建置安裝 2.0.50727.832 稍後進行.NET Framework Hotfix 的 Windows 作業系統的電腦上安裝 SSIS 開發工具。
  • 您可以使用 SQL Server 商務智慧開發 Studio 建立或編輯 SSIS 封裝。
  • SSIS] 封裝中您試著建立或編輯指令碼工作或指令碼元件。
  • 您嘗試在電腦或任何其他有類似設定的電腦上執行此封裝。
本範例在當您嘗試儲存指令碼的變更指令碼編輯器可能不正確地運作,或將可能會產生錯誤訊息。 此外,SSIS 引擎可能無法執行包含指令碼的封裝。 但是,您可以執行或編輯成功,不執行 Windows Vista,或,不具有建置安裝 2.0.50727.832 稍後有在.NET Framework 2.0 的 Hotfix 的電腦上相同的套件。

當就會發生這個問題可能會遭遇下列徵狀:
  • 當您嘗試執行現有的 SSIS 封裝中含有指令碼工作、 執行可能會失敗,並且您會收到下列錯誤訊息:
    無法載入指令碼檔案
  • 時想執行現有的 SSIS 封裝包含指令碼元件執行可能會失敗並 NullReferenceException 」 錯誤訊息。
  • 當您建立新的指令碼,或編輯現有的指令碼,您關閉應用程式 (VSA) 指令碼環境 [Microsoft Visual Studio 後時,您可能會收到下列錯誤訊息:
    工作/元件設定為先行編譯之指令碼,但找不到二進位碼
  • 在指令碼工作或指令碼元件中,您程式碼中設定中斷點。當您偵錯指令碼工作或指令碼元件時,可能會收到下列錯誤訊息:
    無法載入指令碼檔案
    警告: 0x8001902
    型別 'System.Runtime.InteropServices.COMException' 的例外狀況發生 Microsoft.VisualBasic.Vsa.dll 中但未在使用者程式碼中處理
    其他資訊: 因為下列錯誤擷取具有 CLSID {A138CF39 2CAE 42 C 2-ADB3-022658D79F2F} 元件的 COM 類別工廠失敗: 80040154。
    附註如果要解決這個問題,安裝如果.NET Framework 2.0 版本後,早非建置 2.0.50727.832 下列 「 Microsoft 知識庫 」 文件中描述的 Hotfix。
    928208FIX: 使用 Visual Studio 的應用程式 Visual Basic 執行階段的自訂應用程式可能會無法編譯的巨集,或是執行巨集
附註您遇到這些徵狀,不論是否已安裝 SQL Server 2005 Service Pack 1 (SP1)。

發生的原因

Microsoft.NET Framework 2.0 2.0.50727.832 稍後組建因為的通用語言執行階段 (CLR) 工作站 Runtime (Mscorwks.dll) 中最近的變更就會發生這個問題。 變更介紹 VSA 和 SSIS 使用 Visual Basic 執行階段引擎 (Vsavb7rt.dll) 的二進位相容性問題。 在發生問題而無法從巨集編譯作業期間正確產生的組件。 這個問題會導致現存的封裝包含無法以執行已編譯指令碼。

某些設計階段作業的 VSA 也會受到影響。 比方說,編譯器可能無法產生一般中繼語言 (CIL),當您在設計階段使用 VSA。

解決方案

如果要解決這個問題,使用根據您需要下列方法之一。

附註下列方法描述您可以套用在正在執行 SSIS 的電腦的 Hotfix。請注意每個這些 Hotfix 提供相同的功能。唯一的差別在於每一個 Hotfix 封裝依據特定版本的 SQL Server 2005。

方法 1

附註我們建議您使用這個方法,如果要解決這個問題。

安裝 SQL Server 2005 Service Pack 2 (SP2)。如需有關如何取得 SQL Server 2005 Service Pack 2 的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
913089如何取得最新的 Service Pack,SQL Server 2005 的

方法 2

附註如果下列情況成立,就使用這種方法:
  • 您不想安裝 SQL Server 2005 SP2。
  • 安裝 SQL Server 2005 SP1。
  • 您不套用任何 Hotfix,根據 SQL Server 2005 SP1。
  • SQL Server 2005 的目前的組建是 2047年。
套用下列 「 Microsoft 知識庫 」 文件中所述的 Hotfix:
932555FIX: A 指令碼工作或指令碼元件可能無法正確執行 SQL Server 2005 組建 2047年中執行 SSIS 封裝時

方法 3

附註如果下列情況成立,就使用這種方法:
  • 您不想安裝 SQL Server 2005 SP2。
  • 安裝 SQL Server 2005 SP1。
  • 套用 Hotfix,根據 SQL Server 2005 SP1。
  • SQL Server 2005 的目前的組建是晚於 2047年。
套用下列 「 Microsoft 知識庫 」 文件中所述的 Hotfix:
931593FIX: A 指令碼工作或指令碼元件可能無法正確執行組建 2153年和更新版本建立的 SQL Server 2005 中執行 SSIS 封裝時

方法 4

附註如果下列情況成立,就使用這種方法:
  • 您不想安裝 SQL Server 2005 SP2。
  • 您正在執行 SQL Server 2005 發行的版本。
  • 您不套用 Hotfix,根據 SQL Server 2005 的發行版本。
  • SQL Server 2005 的目前的組建是 1399年。
套用下列 「 Microsoft 知識庫 」 文件中所述的 Hotfix:
932556FIX: A 指令碼工作或指令碼元件可能無法正確執行組建 1500年和更新版本所建置的 SQL Server 2005 中執行 SSIS 封裝時

方法 5

附註如果下列情況成立,就使用這種方法:
  • 您不想安裝 SQL Server 2005 SP2。
  • 您正在執行 SQL Server 2005 發行的版本。
  • 您已套用 Hotfix,根據 SQL Server 2005。
  • SQL Server 2005 的目前的組建是晚於 1399年。
套用下列 「 Microsoft 知識庫 」 文件中所述的 Hotfix:
932557FIX: A 指令碼工作或指令碼元件可能無法正確執行 SQL Server 2005 組建 1399年中執行 SSIS 封裝時
使用 [任何這些方法之後可能仍然有任何下列 「 Microsoft 知識庫 」 文件中所述的問題:
928208FIX: 使用 Visual Studio 的應用程式 Visual Basic 執行階段的自訂應用程式可能會無法編譯的巨集,或是執行巨集
在這種情況下套用如果.NET Framework 2.0 版本後,早非建置 2.0.50727.832 Microsoft 知識庫 」 文件 928208 中描述的 Hotfix。

狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

其他相關資訊

.NET Framework 2.0 Hotfix 會在安裝之後,某些情況下可能會發生在不同的作業系統和硬體平台上。下列是與這裡描述的 Hotfix 減輕任何潛在問題的方式的相關資訊一起這些情況的說明。

描述 1

符合下列規格的所有電腦都繼續運作而不會受到影響:
  • 正在執行 Windows Vista 以外的 Windows 作業系統的電腦
  • 在其.NET Framework 2.0 Hotfix 建置 2.0.50727.832 稍後尚未安裝的電腦
此外,會正確地執行 SSIS 封裝。

描述 2

指令碼工作或指令碼元件並不包含任何 SSIS 封裝會正確地執行。

描述 3

並包含指令碼工作或指令碼元件任何 SSIS 封裝會繼續正確執行,如果您選擇不到先行編譯程式碼。

附註這個案例是在 64 位元平台上不可能的。在 64 位元平台上編譯以 JIT 基礎程式碼沒有編譯器工具。

描述 4

預設情況下,一起與任何正在執行 Windows Vista 的電腦上作業系統一起安裝.NET Framework 2.0 的 Hotfix。您可以藉由安裝本文中所述的 Hotfix 來解決這個問題。

描述 5

在 64 位元平台上不能執行任何含有指令碼工作或指令碼元件的 SSIS 封裝。您可以藉由安裝本文中所述的 Hotfix 來解決這個問題。唯一的解決方式是以手動方式重新編譯所有已安裝的.NET Framework 2.0 Hotfix 的電腦上的指令碼。此程序可保證 CIL 程式碼是同時產生,並由相同的 VSA 版本。因此,是沒有二進位不相容。

描述 6

在執行 Windows Vista 以外的 Windows 作業系統中的所有電腦上, SSIS 基礎結構會嘗試重新編譯不會執行的指令碼。即使不安裝.NET Framework 2.0 Hotfix 也是如此。在大多數情況下 SSIS 封裝會繼續執行,而不需手動介入。您可能會注意到非常小的效能降低,因為的重新編譯的額外負荷。減少為少於 1%。安裝 SSIS Hotfix 或 SQL Server 2005 SP2 時封裝就會依照額外的步驟,在解析二進位不相容,如果持續的失敗執行 CIL 程式碼。不過,封裝記錄檔和主控台可能包含有一個下列的警告訊息或其中一個有關失敗下列的錯誤訊息。

警告訊息 1

先行編譯的指令碼無法載入。嘗試重新載入以更新資料指令碼。若要請詳細資訊,請參閱微軟知識庫文件 KB931846 (http://go.microsoft.com/fwlink/?LinkId=81885)

警告訊息 2

先行編譯的指令碼無法載入。嘗試重新編譯。若要請詳細資訊,請參閱微軟知識庫文件 KB931846 (http://go.microsoft.com/fwlink/?LinkId=81885)

警告訊息 3

先行編譯的指令碼無法載入。嘗試重新載入以更新資料指令碼。若要請詳細資訊,請參閱微軟知識庫文件 KB931846 (http://go.microsoft.com/fwlink/?LinkId=81885)

錯誤訊息 1

指令碼無法被重新編譯或執行: {0} 有關的詳細資訊請參閱 Microsoft 知識庫 」 中的 KB931846 文 (http://go.microsoft.com/fwlink/?LinkId=81885)

錯誤訊息 2

先行編譯的指令碼無法載入。正在執行指令碼元件的電腦沒有編譯器能夠重新編譯指令碼。若要重新編譯指令碼,請參閱 Microsoft 知識庫 」 中的 KB931846 文 (http://go.microsoft.com/fwlink/?LinkId=81885)

錯誤訊息 3

先行編譯的指令碼無法載入。正在執行指令碼工作的電腦沒有編譯器能夠重新編譯指令碼。若要重新編譯指令碼,請參閱 Microsoft 知識庫 」 中的 KB931846 文 (http://go.microsoft.com/fwlink/?LinkId=81885)

SSIS 和 VSA 之間互動的概觀

SSIS 可讓開發人員使用多個指令碼工作並指令碼轉換在 SSIS 封裝,以啟用自訂工作流程和轉換邏輯中。在這些元件中使用的基礎技術是 VSA。當程式開發人員會使用指令碼在設計階段時,VSA IDE 啟動,及開發人員可以程式自訂 Visual Basic 2005 程式碼。當關閉 IDE Visual Basic 程式碼是自動先行編譯的 CIL 程式碼格式。

附註CIL 先前被稱為 Microsoft 中繼語言 (MSIL)。

Visual Basic 原始程式碼和 CIL 程式碼都將儲存在封裝結構搭配其他封裝詳細資料。封裝執行時,在偵錯,或在已部署案例中封裝中的任何 CIL 程式碼傳送到 VSA 引擎,並再執行。

附註此互動是透明的。 通常,您就無法得知的此通訊協定。

您也可以決定不先行編譯 CIL 程式碼,以每個指令碼為基礎。在這種情況下 Visual Basic 原始程式檔會儲存只在封裝中,並不會儲存在 CIL 程式碼。在執行階段 VSA 動態編譯任何未儲存的 CIL 程式碼中的原始程式碼。接著,VSA 會將使用先前描述的方法執行結果的 CIL 程式碼。不過,VSA 的某些編譯元件擁有永遠不會被支援 64 位元電腦上。因此,自動編譯步驟會在那些 64 位元部署失敗。如果要解決此問題唯一的方法是請確定您一律先行編譯指令碼用在 64 位元的部署。

如 Microsoft SQL Server 更新命名的結構描述的更多有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
822499Microsoft SQL Server 軟體更新套件的新命名結構描述
如 Microsoft 時它已修正軟體發行軟體之後,會使用的術語的更多有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
824684用來描述 Microsoft 軟體更新標準術語的說明

屬性

文章編號: 931846 - 上次校閱: 2007年11月20日 - 版次: 3.2
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
關鍵字:?
kbmt kbprb kbtshoot kberrmsg kbbug KB931846 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:931846
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com