问题标签 [esent]

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 回答
174 浏览

c++ - 为什么 JetAttachDatabase 返回错误 -550?

堆栈,我需要帮助,JetAttachDatabase 返回错误 -550。JET_paramRecovery 已关闭。我应该怎么做才能开始工作?

我已经尝试恢复实例,但我没有恢复文件...我不知道该怎么办。现在我有这样的代码

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. 如果没有日志文件,是否有办法使基础处于一致状态,但基础处于关闭状态。
0 投票
1 回答
147 浏览

windows - ESENT 内部:JetPrereadKeys() 的预期行为

我有一个应用程序处理存储在 ESENT 中的大量数据(100 GB+)。该表的架构是:12 字节JET_bitColumnFixed键和JET_coltypLongBinary值,典型大小约为 2 KiB。页面大小设置为 32 KiB。我不会更改外部 long 值的默认 1024 字节大小阈值,因此我认为这些值主要存储在外部。

我对提高冷缓存查找和检索性能很感兴趣,因为这些操作是分批进行的,并且密钥是预先知道的。据我了解,JetPrereadKeys () API 旨在提高这种情况下的性能,但事实证明,无论有没有这个调用,我都看不到实际行为有任何变化。

更多详情如下:

  • 就我而言,JetPrereadKeys() 总是报告足够数量的预读密钥,等于我在调用 API 时提交的密钥数量。如文档中所述,提交的密钥已适当排序。

  • 我尝试了同步和异步两种方法,其中异步方法是:将预读调用发送到线程池,同时继续在当前线程上查找和检索数据。

  • 通过尝试JET_paramEnableViewCacheJET_paramEnableFileCache参数的所有可用组合,我尝试了 ESENT 的两种可用缓存模式,无论是使用 MMAP 还是专用页面缓存。

  • 除了一个小例外,我无法看到记录的 I/O 操作在有和没有预读的情况下有什么区别。也就是说,我希望此操作会导致(最好是异步)获取 B 树的必要内部节点。但我唯一看到的是从 JetPrereadKeys() 本身的堆栈中偶尔出现的同步小读取。读取的大小很小,从某种意义上说,我认为它不可能预取所有需要的信息。

  • 如果我调试 Windows Search 服务,我可以中断对 JetPrereadKeys() 的各种调用。因此,至少有一个真实世界的示例调用此 API,大概是出于某种原因。

  • 我所有的实验都是在机器重启后进行的,以确保数据库页面缓存为空。


问题:

  1. 在所描述的情况下,JetPrereadKeys() 的预期行为是什么?

  2. 如果我使用这个 API,我是否应该期望看到不同的 I/O 模式和更好的性能?我应该期望看到数据的同步预读还是异步预读?

  3. 是否有另一种方法可以通过以某种方式向 ESENT 暗示即将到来的批次来提高 I/O 性能?

0 投票
0 回答
41 浏览

c# - JET/Esent:SeekEQ 找不到多列索引和通配符的匹配项

我有一个带有 2 列主索引的 5 列表。假设索引定义为 ( Col1, Col2)。

在以下代码段中,Api.TrySeek返回false,我不知道为什么:

但是,如果我使用SeekGrbit.SeekGE,它会返回true。有人可以解释为什么吗?不适用于通配符列,但可以吗?SeekEQSeekGE

在循环中,我仔细检查了所有条目是否都具有Col1 == colVal1,以排除它只是在 where 找到条目的可能性Col1 > colVal1

0 投票
1 回答
177 浏览

c# - 如何更新 Microsoft.Isam.Esent.Interop?

我们使用“Microsoft.Isam.Esent.Interop”创建了一些库。在另一台 PC 上运行后,我得到了这个异常:

在我们的 PC 上,我们有两个版本 '10.0.0.0' 和 '6.3.0.0' placet

\Microsoft.NET\assembly\GAC_MSIL\microsoft.isam.esent.interop\v4.0_10.0.0.0__31bf3856ad364e35\Microsoft.Isam.Esent.Interop.dll

\Microsoft.NET\assembly\GAC_MSIL\microsoft.isam.esent.interop\v4.0_6.3.0.0__31bf3856ad364e35\Microsoft.Isam.Esent.Interop.dll

但是,生产只有“6.3.0.0”。所以,我有几个问题:

  1. 如何将“Microsoft.Isam.Esent.Interop.dll”版本从“6.3”更新到“10.0”?
  2. 我需要用旧版本编译才能工作吗?
  3. 或者,我如何支持这两个版本?

谢谢你。

0 投票
0 回答
27 浏览

esent - 脏关机后如何以编程方式恢复 ESENT 数据库?

当使用 ESENT 数据库的应用程序崩溃时,数据库会被标记为脏,因此下次您尝试打开它时JetAttachDatabase会返回JET_errDatabaseDirtyShutdown.

不幸的是,似乎没有像“JetRecoverDatabase”这样的函数或我可以传递给 init 或附加函数以尝试自动恢复的标志。但这JetRestore需要JetBackup在应用程序崩溃之前的某个时间点调用。

数据丢失对我的应用程序来说是可以的,但是如果发生崩溃时至少可以恢复一些现有数据,那就太好了(旁注:我的应用程序不会一直崩溃。我目前正在测试各种故障可能发生)。我现在所做的只是删除数据库并重新创建它,但同样,最好恢复一些数据。

关于如何使用 ESENT 的好例子很少,所以它是一个陡峭的学习曲线。我在 GitHub 上为这个特定错误找到的几个代码示例只是说要esentutl.exe在数据库上运行。虽然我想我可以执行程序来尝试修复它,但我更愿意以编程方式进行。

0 投票
0 回答
26 浏览

esent - 停止 ESENT 写入事件查看器

您如何以编程方式告诉 ESENT 不要将事件记录到事件查看器?我注意到,每当我的应用程序使用数据库时,应用程序日志就会充满大量消息(在 1 秒内计数 68 条)。

这里只是我看到的一些例子。

是否可以设置JetSetSystemParameterJetInit标志来限制写入事件查看器的数量?