问题标签 [extensible-storage-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
979 浏览

c++ - 如何使用 ESE CPP api 从 ESE 数据库文件中读取字符串值?

我正在解析ESE 数据库文件,即WebCacheV01.dat。这是 IE 10 开始存储所有浏览历史记录和其他信息的文件。我正在使用 JET Blue CPP api 来解析这个文件。

我可以读取整数或长整数类型的任何列值,但无法读取字符串类型的列值。

例如,我打开了“MSysObjects”表并想要检索“Name”列的值。

这是示例代码

JetRetrieveColumn 的返回值为 -1507,它不过是 JET_errColumnNotFound。我已经使用 ESEDatabaseViewer 工具验证了 MSysObjects 表包含 25 列。这意味着列 18 不是无效的。

如果有人知道如何从 ESE 数据库中检索字符串值,请告诉我。

提前谢谢你。

0 投票
1 回答
1106 浏览

internet-explorer - Internet Explorer - 嵌入式数据库

每个浏览器都使用一些嵌入式数据库。从 Wikipedia 信息看来,Google Chrome 使用 SQLite 和 LevelDB。

[SQLite 的 Wiki] - “Google Chrome、Opera、Safari 和 Android 浏览器都允许在浏览器中的 SQLite 数据库中存储和检索信息……” [LevelDB 的维基] - “LevelDB被用作 Google Chrome 的 IndexedDB 的后端数据库,并且是 Riak 支持的后端之一。”

但是对于 IE 的浏览器嵌入式数据库是什么,并没有明确的信息。有些人在他们的博客中声称它是Extensible Storage Engine和一些SQL Server Compact。但不幸的是,维基页面或某些官方网页都没有确认这一点。

有没有人知道哪个是 IE 的嵌入式数据库的具体信息。

此外,如果有关于移动浏览器、Firefox 和 Safari 的信息,那就太好了。

PS我不是在寻找某人在博客上发布的信息。我确实找到了这类博客,但对我来说很难信任。我更多的是寻找一些官方社区、网页等提供的信息。

0 投票
2 回答
1489 浏览

c# - 尝试使用 ManagedEsent 访问/附加 ESE 数据库时出现问题

我正在尝试使用 ManagedEsent 库读取 ESE 数据库 (.edb)。但是,我在设置数据库时遇到错误。在附加数据库(调用 JetAttachDatabase())时似乎出现了错误。

我收到的错误消息是“软恢复旨在备份数据库。应该使用恢复”。

下面是我的代码:

我得到的例外是:

有什么想法可能导致这种情况吗?我附加的 .edb 文件可能无效吗?

0 投票
1 回答
275 浏览

odbc - 用于访问 ESE edb 文件的 ODBC 驱动程序

是他们在 Windows 7 上访问 edb 文件的任何 odbc 驱动程序。

我正在尝试从查询工具 ODBC 工具访问 edb 文件。但直到我无法连接到数据库。

请让我知道如何连接到 edb 文件。我在哪里可以找到 edb 文件的 ODBC 驱动程序。我检查了 Microsoft 文档,但我所有的努力都是徒劳的。

0 投票
1 回答
594 浏览

c++ - 如何使用 Microsoft 的 API 恢复/恢复 ESE DB

我在这里基本上想要实现的是恢复脏数据库的正确方法。

esentutl /mh db.dat产生以下输出

在此处输入图像描述

这很好,因为我在被另一个程序打开时复制了数据库。

是否可以在没有正确日志和 chk 文件的情况下使用微软的 JetBlue Api 打开数据库?(ESEDatabaseView以某种方式做到了,nirsoft.net

如果 Microsoft 的 API 无法实现这种情况,并且需要日志,那么恢复数据库的正确方法是什么(我已经更改了我的数据库和日志位置)

这是我的代码:

JetAttachDatabaseW以 -550 失败JET_errDatabaseDirtyShutdown

编辑我发现esenutl /p data.dat没有任何检查点和日志文件的简单调用也可以解决问题。我试过使用该JetExternalRestoreW命令,但它一直在抛出#define JET_errFileNotFound -1811 /* File not found */

0 投票
1 回答
41 浏览

memory-leaks - 使用 JetUpdate 在可扩展存储引擎数据库中插入记录时如何释放内存?

我需要插入数百万条记录。现在我处于一个非常紧凑的循环中,对于每条记录,我

但是,当通过执行 JetUpdate插入记录时,占用的内存越来越多。即使我停止执行插入记录或插入所有记录,内存也不会被释放。

我怎么能限制记忆上升?

为什么JetCommitTransaction 不释放内存?

如何及时释放内存?

0 投票
1 回答
460 浏览

extensible-storage-engine - 在不完全关闭的情况下附加 ESE 数据库

我有一个"Vulcan.edb"从正在使用的应用程序复制的 ESE 数据库 ( )。自然,这意味着数据库处于“脏关机”状态。幸运的是,我确实有数据库的日志文件("V01.log"),根据我能找到的每个 类似 问题,我应该能够附加数据库并让引擎恢复它。这是我用来附加数据库的代码,使用托管 ESE API(非托管 C++ 端口应该是微不足道的):

实际上,如果我将数据库文件和日志文件都复制到<directory of database>并运行 edbntutl.exe /r V01 /l <directory of database> /s <directory of database> /d <directory of database>,则数据库在我的代码中变得可用和可附加。但是,如果我不采取手动恢复数据库的步骤,我的代码调用失败JetAttachDatabase,错误为JET_errDatabaseDirtyShutdown.

那么为什么我的代码不能自动恢复数据库呢?要么edbntutl正在做一些未记录的事情,要么我在会话配置中遗漏了一些东西以允许引擎恢复数据库。虽然前者不是不可能的,但如果是这样的话,那将是非常不幸的,而且我倾向于相信我只是错过了一些东西。

注意:如果没有证据表明实用程序正在执行公共 API 中不可用的操作,则不会接受相当于“在运行代码之前运行 esentutil”的答案。

0 投票
2 回答
165 浏览

c - 如何使用 C 语言和 esent.lib 在 ESE 中读取表中的列名?

我需要一个代码示例。我想看看我们如何枚举表中的列名。(使用esent.dll/esent.lib和C语言对我来说很重要)

我尝试使用附加代码(找到了一个指南,但它没有按我的预期工作)。

请举个例子。如果您知道 ESE C 编程的优秀指南或只是一些描述其工作原理的资源,请与我分享。(尽管我在谷歌上搜索了很多,但不要害羞为你分享明显的资源)

0 投票
1 回答
71 浏览

c - 当多值列上的 itagSequence = 0 时,什么类型的值返回 JetRetrieveColumns?

我想知道多值列有多少值。MSDN 说“JET_RETRIEVECOLUMN 中的 itagSequence 可以为 0。如果 itagSequence 为 0,则返回多值列的实例数,而不是任何列数据。” (当我们使用 JetRetrieveColumns 函数时)但是要返回的值的数据类型是什么?

检查列是否为多值

检索多值列中的值数量

那么要返回的数据类型是什么?

0 投票
1 回答
57 浏览

c++ - 如何在另一个文件夹中使用 JetAPI 恢复 ES 数据库?

请帮帮我!我有一个处于脏关机状态的数据库(Microsoft Exchange)(数据库、日志、检查点文件),我可以使用 JetInit 函数恢复它,但它会影响原始文件。

  1. 有没有办法在不更改原始文件的情况下使用 JetAPI 在某个新位置恢复此基础,或者如果我对它们具有只读访问权限?
  2. 如果没有日志文件,是否有办法使基础处于一致状态,但基础处于关闭状态。