2016-09-21 15 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

嗨艾恩德,正如我写的,我已经禁用了重叠回收(实际上,安装程序已经为我创建应用程序池时完成了它)。所以不幸的是,这不是我在这种情况下的解决方案。 –

相关问题