2016-09-21 16 views
1

一年前,當我們開始使用RavenDB,我們很快在生產打這個錯誤:RavenDB數據庫還原:操作失敗:無法訪問文件,該文件被鎖定或正在使用

操作失敗:無法訪問文件,該文件被鎖定或正在使用

我們通過一些論壇發現,我們可以通過不運行RavenDB爲IIS網站擺脫這一點,但作爲一個服務。我們做到了,從未再次看到錯誤。到目前爲止:我正在建立一個新的環境和想法,我想讓它運行RavenDB關閉IIS,但錯誤很快又出現了。

事實和我已經試過:

  • 使用自定義的應用程序池的商業許可
  • 流失v.30155(稱爲RavenApplicationPool
  • 有數據文件夾從IIS分開dir(通過Raven/WorkingDir AppSetting)
  • RavenApplicationPool用戶對IIS文件夾和數據文件夾都具有「完全控制」權限
  • Windows身份驗證安裝和網站
  • overlapped recycle disabled啓用應用程序池
  • WebDAV的發佈沒有安裝(如setup docs要求)
  • 打我的鍵盤(沒有運氣)

錯誤網站運行幾分鐘後隨機發生。

C:\ RavenDBExecutables \服務器\ raven.Server.exe - 恢復源= C:\ SOME_PATH \ MY-DB-backup.raven它嘗試使用以下命令來恢復備份時也發生 - 恢復數據庫名稱=我-DB - 恢復數據庫= http://localhost:8080

(該文件夾RavenDBExecutables僅僅是二進制文件的ZIP /可執行文件et.c. - 它不與IIS網站文件夾重疊)

運行還原時,會創建以下文件夾:

  • IndexDefinitions(包含了很多的.index結尾的文件)
  • 指數(很多文件夾的整數名)
  • 日誌(空)
  • 系統(空)
  • 溫度(空)
  • 根文件夾(我-DB)是空的,即沒有數據文件,.resource.database烏鴉數據。ICO與工作DB的

導入失敗後,如果我訪問http://localhost:8080/docs/Raven/Restore/Status,我得到

*很像 「複製PATH_TO_INDEX_FILE」 行,*

「ESENT恢復:失敗!無法恢復數據庫!「, 」Microsoft.Isam.Esent.Interop.EsentFileAccessDeniedException:無法訪問文件,該文件被鎖定或正在使用\ r \ n在 Microsoft.Isam.Esent.Interop.Api.Check(Int32 err)\ r \ n在 Microsoft.Isam.Esent。 Interop.Api.JetRestoreInstance(JET_INSTANCE 例如,源字符串,字符串目的地,JET_PFNSTATUS statusCallback)\ r \ n在 Raven.Database.Storage.Esent.Backup.RestoreOperation.Execute() 「 」 無法恢復數據庫不能訪問文件,該文件被鎖定或正在使用中「

那是什麼呢?

+1

檢查您的系統事件日誌,昨天晚上我確實發生了這個錯誤,結果應用程序池沒有數據目錄的權限。 – stricq

回答

0

發生這種情況的原因是默認情況下IIS會重疊回收。 這意味着這兩個版本的應用程序正在運行(並且都嘗試使用相同的資源)。 重疊回收設置爲false時,不應該發生。 當用戶將兩個數據庫設置爲相同路徑時,我們看到了類似的錯誤

+0

嗨艾恩德,正如我寫的,我已經禁用了重疊回收(實際上,安裝程序已經爲我創建應用程序池時完成了它)。所以不幸的是,這不是我在這種情況下的解決方案。 –

相關問題