2017-01-31 52 views
4

我有一個SSIS包來從網絡驅動器加載excel文件。它旨在加載內容,然後將文件移動到存檔文件夾。SSIS包從SSMS工作,但不是從代理作業

當以下SQL語句在SSMS窗口中運行時,一切正常。

但是,當它複製到SQL代理作業並從那裏執行時,該文件既不加載也不移動。但它從代理日誌中顯示「成功」。

同樣的事情也發生在代替T-SQL作業 「SSIS工作」,甚至與Windows帳戶代理。(同一個帳戶登錄SSMS)

Declare @execution_id bigint 
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'SG_Excel.dtsx', @[email protected]_id OUTPUT, @folder_name=N'ETL', @project_name=N'Report', @use32bitruntime=True, @reference_id=Null 
Select @execution_id 
DECLARE @var0 smallint = 1 
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @[email protected] 
EXEC [SSISDB].[catalog].[start_execution] @execution_id 
GO 

附:首先應用網絡驅動器的相對路徑,然後切換到絕對路徑(\\ server \ folder)。這不是解決問題。

+0

您是否已嘗試從Visual Studio中執行SSIS包?你有沒有嘗試過你的SSMS用戶和代理用戶?您是否收到任何警告/錯誤/調試信息? – Tyron78

+0

@ Tyron78,它在Visual Studio中運行良好。是的,我嘗試使用代理設置SSIS SQL代理作業,但它仍然無法正常工作... – Echo

+0

@ Tyron78奇怪的是作業顯示「成功」,沒有錯誤消息。 – Echo

回答

0

我個人以避免文件系統任務 - 我發現它不可靠。我將用腳本任務替換它,並使用來自命名空間的.NET方法,例如, File.Move。這些方法更可靠,並具有成熟的錯誤處理。

下面是System.IO命名空間的起點:

https://msdn.microsoft.com/en-us/library/ms404278.aspx

一定要選擇使用其他版本鏈接相關的.NET版本。

0

當我在過去看到類似這樣的事情時,我的軟件包沒有訪問我認爲是在運行時的路徑,它正在其他地方尋找,找到一個空文件夾&退出成功。

SSIS可以有一個討厭的習慣,回到可變的默認值。它可能正在尋找你在開發中使用的不同路徑?也許硬編碼所有路徑值作爲測試?或放在中斷點&仔細檢查所有變量&參數的運行時間值。

其它遠射可能是:

  • 名稱解析,你確定網絡名稱在運行時正確地解決?

  • 32/64位問題。開發者傾向於運行32位,活着可能是64位。可能會干擾文件路徑?運行時可能強制爲32位?

0

有問題,與不具有語句終止SQL語句;是導致問題()。

Declare @execution_id bigint ; 
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'SG_Excel.dtsx', @[email protected]_id OUTPUT, @folder_name=N'ETL', @project_name=N'Report', @use32bitruntime=True, @reference_id=Null ; 
Select @execution_id ; 
DECLARE @var0 smallint = 1 ; 
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @[email protected] ; 
EXEC [SSISDB].[catalog].[start_execution] @execution_id ; 
GO 

我所面臨的業務代理類似的問題..

1

SSIS包作業的SQL Server代理的環境下運行。設置了哪些帳戶以在SQL Server上運行SQL Server代理?它可能需要作爲有權訪問網絡共享的域帳戶運行。

或者您可以將Excel文件複製到SQL Server上的本地文件夾,以便軟件包可以訪問該文件。

相關問題