2014-10-27 63 views
0

類似this post在SSIS包

更新的系統變量我有一個SSIS包使用腳本任務在磁盤上創建一個Excel文件,併爲之填充數據從存儲過程(使用Microsoft.Office.Interop一個SQL。 Excel中)。這在測試時以及通過SSIS目錄手動運行已部署的軟件包時效果很好,但是當我通過SQL Server代理自動運行任務時,軟件包在「腳本任務」步驟中失敗。我的作業作爲代理帳戶運行,與我在測試時登錄到服務器的帳戶相同(並且與手動運行包時的帳戶相同)。

我的理解是,即使作業使用代理運行,任何桌面交互都會在SQL Server代理登錄的配置文件上下文中發生。由於該配置文件未被主動登錄,因此交互失敗。挖掘更多內容時,名爲「InteractiveMode」的包中有一個bool System Variable,它被設置爲「False」。我有一種感覺,如果我可以將其切換爲True,那麼一切都會變得沉悶多y。麻煩的是,該變量只能作爲「ReadOnly」訪問我的腳本任務...

有沒有什麼辦法在運行時手動或編程設置SSIS包中的System:InteractiveMode變量?請幫忙!我現在不得不手動運行這些預定作業,這是一個很大的麻煩。

謝謝。

+0

不,您將無法更改該值。它是隻讀的,因爲它從操作系統告訴它的價值中獲得它的價值。相關問題缺乏細節。你如何定義你的工作?它是否以32位模式運行?我的回憶是模糊的,但我相信我曾經通過Agent運行SSIS包與辦公室庫進行交互。 – billinkc 2014-10-27 18:20:30

+0

作業定義爲32位,在代理本地管理員帳戶下運行。我不認爲這是一個權限問題,因爲我試圖給「每個人」完全訪問正在寫入的文件夾。 – ItJustWerks 2014-11-11 20:22:11

+0

這與您的問題有關? http://stackoverflow.com/a/26122982/181965 – billinkc 2014-11-11 21:06:22

回答

1

幾個月前我有這個問題,事實證明,執行選項需要設置爲使用32位運行時。如果您使用SQL Server 2008 R2,則可以打開您的作業並雙擊該步驟。它位於執行選項選項卡下。 enter image description here

如果仍然有錯誤,你可能要考慮改變包裝,以便它使用一個文件系統任務創建/重命名Excel文檔,然後在數據流任務從您的存儲過程中的數據移動到你的excel文件。根據您的數據,您可能需要在兩者之間添加數據轉換步驟。下面是關於這一主題的好文章:http://www.mssqltips.com/sqlservertip/3046/sql-server-integration-services-data-type-conversion-testing/

編輯: 我沒有使用SQL Server 2012中還沒有,但根據MSDN,它看起來像選項配置選項卡下。以下是他們的文章:http://msdn.microsoft.com/en-us/library/gg471507(v=sql.110).aspx

+0

我正在使用SQL Server 2012,我根本沒有看到執行選項選項卡。是否有另一種方法來設置32位運行時選項? – ItJustWerks 2014-10-27 21:13:14

+0

所以我找到了32位選項,並沒有幫助。我無法使用文件系統任務創建Excel文件/數據流任務來移動數據,因爲Excel文件必須以非常特殊的方式進行格式化。使用Microsoft.Interop.Excel我可以通過VBA設置列/單元格格式。這仍然真的殺了我...任何其他建議? – ItJustWerks 2014-11-11 20:20:53

+0

您可以創建一個excel文件作爲模板,使用文件任務使用新名稱(重命名文件)複製副本,將數據複製到那裏,然後將其保存。我有幾個喜歡的地方,他們需要它以特定的方式進行格式化,所以我在服務器上爲了Excel模板創建了一個文件夾。 – april4181 2014-11-12 14:10:36