Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Esent数据库引擎仅限于特定页面大小?_Esent_Edb - Fatal编程技术网

Esent数据库引擎仅限于特定页面大小?

Esent数据库引擎仅限于特定页面大小?,esent,edb,Esent,Edb,由于页面大小问题,我在打开esent数据库(Windows.edb)时遇到问题。我的系统上Windows.edb的页面大小为32K。当我通过JET_paramDatabasePageSize设置此参数时,JetInit将返回错误-1213(数据库页面大小与引擎不匹配)。Laurion Burchall建议在我只需要对数据库进行只读访问时关闭JET_paramRecovery。这解决了我的问题 直到现在。我的数据库没有完全关闭。我假设,当JET_paramRecovery=On时,JetInit将

由于页面大小问题,我在打开esent数据库(Windows.edb)时遇到问题。我的系统上Windows.edb的页面大小为32K。当我通过JET_paramDatabasePageSize设置此参数时,JetInit将返回错误-1213(数据库页面大小与引擎不匹配)。Laurion Burchall建议在我只需要对数据库进行只读访问时关闭JET_paramRecovery。这解决了我的问题

直到现在。我的数据库没有完全关闭。我假设,当JET_paramRecovery=On时,JetInit将自动执行恢复,并让我读取数据库。但是如果我试着这样做,我会得到旧的-1213错误

现在我可以用ESENTUTL修复我的文件,但我应用程序的虚拟用户将无法修复。是否有某种方法可以启用恢复功能并仍然能够定义任何数据库页面大小?数据库位置没有日志文件(我将日志路径设置为同一目录,以确保它们不会写入其他任何地方)


这是否意味着我机器上的引擎不支持页面大小或数据库?或者我可以通过设置另一个魔术开关来解决问题吗?

在另一个应用程序的数据库上运行恢复是很棘手的。ESENT是一个嵌入式引擎,每个应用程序都可以有自己的设置。在运行恢复之前,您需要知道:

  • 日志文件的位置(JET_paramLogFilePath)
  • 日志文件大小(JET_参数日志文件大小)
  • 数据库页面大小(JET_paramDatabasePageSize)
  • 日志文件basename(JET_paramBaseName)

  • 如果您正确设置了所有这些参数,则恢复将正常工作。如果您没有正确执行此操作,则其他应用程序可能在恢复其数据库时遇到问题

    在另一个应用程序的数据库上运行恢复很棘手。ESENT是一个嵌入式引擎,每个应用程序都可以有自己的设置。在运行恢复之前,您需要知道:

  • 日志文件的位置(JET_paramLogFilePath)
  • 日志文件大小(JET_参数日志文件大小)
  • 数据库页面大小(JET_paramDatabasePageSize)
  • 日志文件basename(JET_paramBaseName)
  • 如果您正确设置了所有这些参数,则恢复将正常工作。如果您没有正确执行此操作,则其他应用程序可能在恢复其数据库时遇到问题

    有一种简单(但棘手)的方法“修复”未正常关闭的EDB数据库。在偏移量52处的报头中有状态标志。它是一个4字节的整数,应该设置为3(如果不正常闭合,您可能会发现值为2)

    您可能需要在包含数据库头副本的第二个数据库页面上重复此条目。您可以发现页面只是数据库的页面大小(通常是40968192等)

    由于这是一个真正的黑客,你应该使用它在你自己的风险

    有一种简单(但棘手)的方法“修复”未正常关闭的EDB数据库。在偏移量52处的报头中有状态标志。它是一个4字节的整数,应该设置为3(如果不正常闭合,您可能会发现值为2)

    您可能需要在包含数据库头副本的第二个数据库页面上重复此条目。您可以发现页面只是数据库的页面大小(通常是40968192等)

    由于这是一个真正的黑客,你应该使用它在你自己的风险