Sql-Server-2016

SSIS 不執行任何腳本任務

  • December 3, 2019

我在項目部署模型解決方案中有一個用 Visual Studio 2015 編寫的簡單 SSIS 包。該包包含一個腳本任務,其中包含用 C# 編寫的程式碼並執行一個非常簡單的任務。此腳本面向 .NET Framework 4.5.2 版。我驗證了這個版本的 .NET 安裝在 SQL Server 機器上。

當我在本地開發環境中執行該包時,它執行良好並且完全符合我的需要。

我將它部署到 DEV SQL 實例中的集成服務目錄,並設置了一個 SQL Server 代理作業來執行包。我執行了這項工作,但它在腳本任務之後的一步中失敗了。失敗是由於腳本任務沒有完成它的工作。檢查 SSIS 包執行消息顯示腳本任務步驟已完成且沒有錯誤。我檢查了事件日誌,沒有發現任何錯誤。我仔細檢查了 C# 程式碼。我修改了腳本任務程式碼以生成資訊消息 (Dts.Events.FireInformation),以確保腳本任務實際上正在觸發。我也將作業中的 SSIS 日誌記錄更改為 Verbose。我嘗試了其他幾種方法來驗證 C# 程式碼是否被呼叫和執行。我關閉了防病毒軟體並重新執行,沒有任何變化。

我確信腳本任務只是沒有執行腳本任務中的 C# 程式碼。我採用相同的基本 c# 腳本程式碼並創建了一個控制台應用程序並在伺服器上成功執行它,因此我知道 .NET 程式碼在伺服器上工作。我查看了組件服務中的訪問權限,權限似乎很好。SSIS 或事件日誌中沒有拋出任何錯誤,因此很難找出問題所在。

我不確定還有什麼要檢查的。有誰知道我還能檢查什麼可能會阻止腳本任務被 SSIS 或 SQL 代理執行?

  • 更新 -

因此,在花了超過 3 天的時間試圖弄清楚這一點後,我決定以不同的方式處理這個問題。

憑直覺,我決定安裝 VS 2017 和 SSDT 2017,看看升級後的開發環境是否會有所作為。在將項目升級到 2017 並重建腳本任務後,它在伺服器上完美執行。

所以顯然我的開發環境或編譯程式碼的版本存在某種問題。

生活和學習我猜!

我整天都在徒勞地處理同樣的問題,我的臨時解決方案是使用 CMD 命令執行 SSIS 包。

這是我的例子:

dtexec /ISSERVER "\"\SSISDB\project_____name\Main_Package.dtsx\"" /SERVER server___name /X86 /Par "\"$Project::var___name\"";"\"value___value\""

經過幾個小時的研究,我將一些故障排除步驟放在一起,這樣我就不會忘記這個事件。我希望這對其他人有幫助。我試圖包含盡可能多的細節以供參考,但並未列出每個步驟。

通過 VS/SSDT 執行時,SSIS 腳本任務日誌記錄顯示在 SSIS 日誌表中,但在通過 SSMS 或通過 SQL Server 代理執行包時不顯示

按照以下順序執行故障排除步驟,並在每個步驟之後在 SSMS 中測試包執行。這些步驟中的大多數都要求您是 SQL 實例和數據庫伺服器的管理員。

  1. 驗證您是作為在數據庫伺服器上具有本地管理員權限的帳戶執行包。
  • 在大多數情況下,包將作為 SQL 代理服務帳戶執行,除非執行包的使用者是伺服器上的本地管理員。請注意,如果之前在 SSMS 中更改過參數或連接管理器,則在項目級別重新部署可能需要在部署後更新 SSMS 中的參數或連接管理器。
  1. 在項目級別而不是在包級別重新部署包
  • 在 VS/SSDT 中,右鍵點擊項目名稱並選擇 Deploy
  • 遵循您的正常部署步驟
  1. 驗證項目的目標是正確的 SQL Server 版本
  • 在 VS/SSDT 中,右鍵點擊項目名稱並選擇 Properties
  • 展開配置屬性
  • 選擇正常
  • 將 TargetServerVersion 設置更新為 SQL Server 的正確版本
  • 重新部署包(步驟 1)
  1. 驗證伺服器上執行的 SSIS 服務是否作為具有本地管理員權限的帳戶執行
  • 打開 SQL Server 配置管理器

  • 驗證 SQL Server Integration Services… 是否作為具有本地管理員權限的帳戶執行

    • 查看本地管理員:
    • 轉到電腦管理
    • 系統工具 > 本地使用者和組 > 組 > 管理員
  1. 在 DCOM 配置中驗證 SSIS 啟動和啟動權限
  • 開放組件服務
  • 組件服務 > 電腦 > 我的電腦 > DCOM 配置
  • 選擇 Microsoft SQL Server 集成服務…
  • 右鍵點擊並選擇屬性
  • 選擇安全選項卡
  • 在啟動和啟動權限中,選擇自定義單選按鈕,然後點擊編輯…
  • 選擇管理員並驗證所有權限都選中允許
  • 點擊確定
  1. 檢查數據庫伺服器上的 Windows 事件日誌
  • 事件查看器 > Windows 日誌 > 系統
  • 檢查 DistributedCOM 源是否存在任何錯誤
  • 在我的情況下,腳本似乎作為 SYSTEM 帳戶而不是 SSIS 服務帳戶執行。要解決此問題,您可以從 SQL Server 配置管理器重新啟動 SSIS。

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