一年前,当我们开始使用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() “ ” 无法恢复数据库不能访问文件,该文件被锁定或正在使用中“
那是什么呢?
检查您的系统事件日志,昨天晚上我确实发生了这个错误,结果应用程序池没有数据目录的权限。 – stricq