前兩天做了一個SSIS的Package,用來迴圈Excel然後倒入到資料庫。在開發環境可以正常工作,但是真正部署到SQLAgent後發現Job一直失敗。
開啟JobHistory看到下面的錯誤:
Description:SSISErrorCodeDTS_E_OLEDBERROR.AnOLEDBerrorhasoccurred.Errorcode:0x80004005.AnOLEDBrecordisavailable.Source:"MicrosoftAccessDatabaseEngine"Hresult:0x80004005Description:"TheMicrosoftAccessdatabaseenginecannotopenorwritetothefile''.Itisalreadyopenedexclusivelybyanotheruser,oryouneedpermissiontoviewandwriteitsdata.".
單單看上面的錯誤一般會認為是許可權不夠或者檔案被開啟。但是我看了一下檔案夾目錄根本沒有檔案,而且許可權也沒有問題。直接在開發環境運行也正常。
從網上查了一下發現雖然使用了變數來儲存Excel名稱,但是由於在設定ExcelConnectionManger的時候,指定了Excel檔案地址的),所以在部署完成後還是會去尋找這個檔案。
650) this.width=650;" title="2013-09-16 10-37-25.png" src="http://www.bkjia.com/uploads/allimg/131229/21304641R-0.png" alt="105736675.png" />
由於這個檔案被刪除了,SSISJob在啟動並執行時候找不到就報錯。
解決辦法:
在原始的Excel地址重新放一個Excel檔案,可以讓SSISJob找到。
另外可以考慮將DelayValidation的屬性調整為”Ture”這樣在啟動並執行時候驗證。
本文出自 “關注SQL Server技術” 部落格,請務必保留此出處http://lzf328.blog.51cto.com/1196996/1297609