Sql-Server

SSIS:當目標伺服器為 2016 時,包部分中的腳本未執行

  • March 4, 2020

我遇到了 SSIS 包問題,當目標伺服器版本為 SQL Server 2016 時,包元件中包含的腳本未執行。

  1. 創建一個 SSIS 項目,將目標伺服器版本設置為 SQL Server 2016(非常重要!)
  2. 繼續在預設包中添加一個簡單的腳本。這應該可以正常工作。
  • 就我而言,我有一個腳本,它通過 SMTP 使用 SendGrid 服務發送電子郵件。您可以在此處查看程式碼:https ://pastebin.com/DW3hfBP3
  • 但是我用其他腳本測試了這個問題,比如:MessageBox.Show("Great. Another bug. Thanks a lot guys...");會做。
  1. 創建一個包元件。
  2. 現在只需嘗試將步驟 2 中的簡單腳本重新創建到包部分中。然後將包部分添加到預設包或其他包中並執行任務。即使執行成功,腳本也不會執行。

**注意:**如果您嘗試將腳本從預設包複製到包部分,您還應該注意到一個愚蠢的錯誤,指出版本錯誤。這就是為什麼我說要在包部分重新創建腳本。

我想知道是否有人可以重現此問題以及是否有解決方法?值得注意的是,當目標伺服器是 SQL 2017 時,似乎不會發生此問題。

Microsoft 確認這確實是一個錯誤,將在 Visual Studio 2017 的下一版本 SQL Server Data Tools (SSDT) 中修復。

確認是在 Yammer 上的集成服務 (SSIS) 顧問組中進行的。該組已關閉,因此我無法發布直接連結。然而,這是我被告知的:

沒有簡單的解決方法。包含包部分的包在保留以前的目標伺服器版本時會出現問題。您可以嘗試:

  1. 為 VS2015 版本 16.5 安裝和使用 SSDT ( https://go.microsoft.com/fwlink/?LinkID=832313 )
  2. 為 VS2017 使用您現有的 SSDT,但始終將您的包設計為針對最新的 SQL Server。當您要部署到 SQL Server 2016 時,請將目標伺服器版本切換到 2016,但不要再次打開包或啟動部署嚮導。相反,您應該將 dtsx 複製到另一個不使用包部分的空項目中,然後部署該項目。

帶來不便敬請諒解。我們會盡快修復它。

注意:從那以後我停止使用包元件,而是使用參數化的子包作為替代方案。

引用自:https://dba.stackexchange.com/questions/230073