2012-10-26 96 views
5

我使用dtexec運行SSIS包。這個軟件包在我的系統上運行良好。當我創建SQL服務器代理作業以按計劃運行包時。程序包運行步驟計劃爲T-SQL任務,而不是SSIS程序包)。作業報告沒有錯誤,但它甚至不會在服務器上創建輸出excel文件@我想要的目標。使用dtexec運行SSIS包

此外,當我在命令shell中單獨運行該命令時,它將返回下面顯示的錯誤。間歇性地,它還會在我用來複制文件的FileSystem Task上返回錯誤,並說源或目標不存在!當BIDS中的相同變量值適用於我時,爲什麼SQL作業失敗?

Started: 7:33:27 PM 
Error: 2012-10-26 19:33:27.60 
    Code: 0xC0016016 
    Source: 
    Description: Failed to decrypt protected XML node "DTS:Password" with error 0 
x8009000B "Key not valid for use in specified state.". You may not be authorized 
to access this information. This error occurs when there is a cryptographic err 
or. Verify that the correct key is available. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC00F9304 
    Source: GICSReport Connection manager "Excel Connection Manager" 
    Description: SSIS Error Code DTS_E_OLEDB_EXCEL_NOT_SUPPORTED: The Excel Conne 
ction Manager is not supported in the 64-bit version of SSIS, as no OLE DB provi 
der is available. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC020801C 
    Source: Data Flow Task Excel Destination [22] 
    Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAG 
ER. The AcquireConnection method call to the connection manager "Excel Connecti 
on Manager" failed with error code 0xC00F9304. There may be error messages post 
ed before this with more information on why the AcquireConnection method call fa 
iled. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC0047017 
    Source: Data Flow Task SSIS.Pipeline 
    Description: component "Excel Destination" (22) failed validation and returne 
d error code 0xC020801C. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC004700C 
    Source: Data Flow Task SSIS.Pipeline 
    Description: One or more component failed validation. 
End Error 
Error: 2012-10-26 19:33:27.79 
    Code: 0xC0024107 
    Source: Data Flow Task 
    Description: There were errors during task validation. 
End Error 
DTExec: The package execution returned DTSER_FAILURE (1). 
Started: 7:33:27 PM 
Finished: 7:33:27 PM 
Elapsed: 0.343 seconds 

請幫忙! :) ....我應該將所有的變量,連接管理器和一切添加到我的配置文件?目前我只添加了一些變量和連接管理器的ppty值,但沒有組合似乎有效地工作。

+0

+1,因爲這是一個常見的錯誤,許多可以從閱讀中受益通過如何破譯所有錯誤並達成解決方案。 –

回答

11

我要解決的第一個錯誤是「64位版本的SSIS中不支持Excel連接管理器,因爲沒有OLE DB提供程序可用。」

開箱即用的Excel驅動程序只存在於32位地址空間中。 BIDS/SSDT是一款32位應用程序,因此Excel源和目標都可以正常工作。但是,從命令行/ SQL代理運行它們時,則需要明確使用32位版本的DTEXEC程序。

第1步,將確保您可以在代理程序執行的服務器上的命令行上運行包。假設你的SQL Server安裝在習慣的位置,你可能有以下DTEXEC.exe之一提供給您

C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe 
c:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe 
C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe 
C:\Program Files\Microsoft SQL Server\120\DTS\Binn\DTExec.exe 
C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe 
C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe 
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe 
C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe 

您將要使用的(x86)的版本。未來的讀者,如果你碰巧在32版本的Windows上(也許是Windows 2003),前三種將是唯一可用的選項。正如Vivek的錯誤信息所表明的那樣,他正在以64位模式執行SSIS包。

dtexec提供了一個命令行開關/X86,允許您無縫地使用同一個可執行文件進行32位和64位操作。 LIES!文檔確實會調用它,但是誰讀取文檔?

此選項僅供SQL Server代理使用。如果在命令提示符下運行dtexec實用程序,則忽略此選項 。

所以,你需要通過提供顯式路徑

C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe /file C:\folder\GICSReport.dtsx

我看到運行你的包「無法解密受保護的XML節點」,在你的輸出,並還說明你正在使用的配置文件,因此您可以將您的PackageProtectionLevel從默認的EncryptSensitiveWithUserKey更改爲DontSaveSensitive。該功能的存在是爲了防止敏感數據(密碼)的意外暴露,但由於您已經在使用配置文件處理該數據,因此這不應該成爲問題。 ...現在,我認爲這可能實際上是來自其他軟件包保護級別之一的錯誤。

無論如何,請先嚐試從32位可執行文件開始運行。如果這樣做不起作用,請按照指示更改包裝保護等級。如果其中任何一個都使包運行正常,則嘗試從SQL代理運行相同的命令。

如果所有的作品,紀念這個作爲回答。如果沒有,請更新當前生成的錯誤消息,我們會要求提供更多信息。

+2

像往常一樣徹底的答案比爾! –

0

這裏,如果你想與dtexec從包含Excel導入事務SQL運行SSIS包解決方案。

  1. 創建一個包含以下代碼的批處理文件。

    CD C:\ Program Files文件(x86)的\ Microsoft SQL Server的\ 100 \ DTS \ BINN \ DTEXEC.exe/DE 「密碼」/ F 「C:\ mySSISfolder \ package.dtsx」

  2. 創建指向您的批處理文件的快捷方式,將properties\advanced設置爲以管理員身份運行的快捷方式。

  3. 從辦理SQL過程運行以下命令

    EXEC xp_cmdshell的 'C:\ MyFolder文件\ runssis_sc.lnk'