问题标签 [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.
database - ESENT 表格浏览器?
有人对 Esent 数据库引擎有任何经验吗?我一直在看它的用途,并且很兴奋。
Active Directory 是在索引顺序访问方法 (ISAM) 表管理器(过去称为“Jet”)之上实现的。Exchange、文件复制服务 (FRS)、安全配置编辑器、证书服务、Windows Internet 名称服务 (WINS) 和各种其他 Windows 组件都使用同一个表管理器。 http://technet.microsoft.com/en-us/library/cc961824.aspx
API http://www.codeplex.com/ManagedEsent周围还有 ac# 包装器,并且被 Ayende Rahien 的 DivanDB(.net 文档存储 LINQ 引擎)使用 https://rhino-tools.svn.sourceforge.net/ svnroot/rhino-tools/分支/rhino-divandb
无论如何-有人知道“表格浏览器”/一些用于管理 Esent 的 GUI 吗?
exchange-server - 交换服务器 (.edb) 文件中的表
谁能告诉我交换服务器 .edb 文件中使用的不同表是什么以及它们的架构是什么。
windows - 枚举可扩展存储引擎 (ESENT) 表上的索引
背景
我正在一个名为eselinq的谷歌代码项目中为 ESE 到 .NET 和 LINQ 编写一个适配器。我似乎无法弄清楚的一个重要功能是如何获取为表定义的索引列表。我需要能够列出可用索引,以便 LINQ 部分可以自动确定何时可以使用索引。如果可以找到适当的索引,这将为用户查询提供更有效的计划。
查询索引信息有两个相关函数:
JetGetTableIndexInfo
- 通过tableID获取索引信息JetGetIndexInfo
- 通过tableName获取索引信息
这些仅在如何指定相关表(名称或tableid)方面有所不同。听起来这些将支持我想要的功能,但所有信息级别似乎都要求我已经有一个特定的索引来查询信息。唯一的例外是JET_IdxInfoCount
,但这仅计算存在多少索引。
JET_IdxInfo
听起来很合理,JET_INDEXLIST
但它只列出特定索引上的列。
备择方案
我知道我可以通过另一种方式获取索引信息,例如与数据库表对应的 .NET 类型上的注释,或者要求提前提供索引映射。我认为已经实现了足够的内省,以使其他所有东西都可以在没有用户提供额外信息的情况下开箱即用,除了这个功能。
另一种选择可能是检查系统表以查找相关的索引对象,但这意味着取决于未记录的接口。
为了满足这个问题,我需要一种支持的方法来枚举表上的索引(只需名称就足够了)。
c# - Esent 和 Ravendb 中的 .Net 终结器顺序/语义
帮我理解。我读过
“终结者的执行时间和顺序无法预测或预先确定”
正确的?
但是查看 RavenDB 源代码 TransactionStorage.cs 我看到了这个
假定使用 SafeHandle 处理本机资源的 API 类(属于 Managed Esent)?
因此,如果我理解正确,本机句柄 SafeHandle 可以在 TransactionStorage 之前完成,这可能会产生不良影响,也许 Ayende 围绕此添加了一个 catch all 子句?
实际上深入研究 Esent 代码,它不使用 SafeHandles。
根据 CLR 通过 C# 这很危险吗?
Managed Esent (NativeMEthods.cs) 看起来像这样(使用 Ints 与 IntPtrs?):
Managed Esent 是否以正确的方式处理终结/处置,其次是 RavenDB 以正确的方式处理终结器还是补偿 Managed Esent?
c# - 如何替换多值 ESE 列中的值?
我在我的 ESE 数据库中的一个表中有一个多值短 ASCII 文本列,其中包含此人的电话号码。
我有一组新值,我想完全擦除旧值,只使用新值。
JET_bitSetRevertToDefaultValue 位似乎不起作用。虽然 MSDN 文档说“它导致列在后续检索列操作中返回默认列值。所有现有列值都被删除。”,我发现它什么都不做(不返回返回值)。
或者,是否有一种简单的方法可以找出该列包含多少个值(这可能为零,例如当我进行插入而不是更新时)?如果是这样,我可以运行一个从“nValues”到 1 的循环,通过在提供 itagSequence 值的同时将其设置为 null 来擦除该值,以实现我想要的。
我正在编写 C#,并使用最新版本的 ManagedEsent 库。
提前致谢!
c# - ASP.NET + 线程感知非托管 API
我正在考虑使用 ESENT 进行持久性的 ASP.NET 应用程序。
目前这只是我的爱好项目,所以要求非常灵活。但是,我希望它可以在具有 .NET 3.5 及更高版本以及默认 IIS 设置的 Windows 7、Windows 2008 和 2008 R2 上运行。
在 ESENT 中,大多数操作都需要您打开一个会话对象。文档说:“会话跟踪它在哪个线程上使用,如果在具有打开事务的多个线程上使用它会抛出错误。” API 文档提到了本机线程,而不是托管线程。
我假设打开会话操作相对昂贵,这就是为什么我不想为每个 HTTP 请求打开/关闭会话。
最后,这是我的问题。
在 asp.net 中,我如何在执行我的 C# 代码的每个本机线程上只初始化/取消初始化一次?
下面发布的代码对我有用吗?
在使用 BeginThreadAffinity 方法将 asp.net 托管线程不断固定到本机线程时,我不知道有什么不好的地方吗?在 IIS 负载一个月后,我的会话是否会泄漏而没有一次重新启动?
提前致谢!
c# - ESENT 数据库引擎文件访问被拒绝
我正在尝试将 ESENT windows 数据库与managedesent库一起使用,但我总是收到错误消息
打开数据库的代码是
我正在 Windows 7 上对此进行测试,该应用程序是一个 ASP.NET 应用程序。有没有人对此有任何想法,文档非常少。
exchange-server - Linux 上的交换 edb
我有一个 60GB 的 edb 文件,我想将数据库分成单独的电子邮件。我没有任何原始域信息,所以我不能只启动一个 Server 2k8 虚拟机并在那里重新连接它。我在从文件(从 60 GB 到 30 GB)中剥离二进制数据(不是 0x09、0x0a、0x0d 和 0x20 到 0x7f 的字节)的天真方法方面取得了一些进展,然后将其拆分为明显的 SMTP 标头。这种方法似乎不起作用,因为 Exchange 不会将整个电子邮件放在一个连续的块中,并且它似乎复制了很多电子邮件(这可能是将整个文件视为文件系统的工件,而不是做更明智的做法,比如让文件系统成为文件系统,并将电子邮件存储在 /var/mail 等中)。
所以,问题是:哪些 Exchange 数据库文件格式的工具和文档隐藏在 Google 无法或不会向我展示的世界中?
.net - 教育局文件格式
我想要有关 Exchange 数据库 EDB 文件格式的信息?
我查看了以下链接中提供的信息:
http://sourceforge.net/projects/libesedb/files/
文档很好,但很混乱,所以我需要更多帮助。
如果某些机构有更多关于 EDB 格式的信息,请提供给我。
谢谢你的合作。
esent - 如果我更改 PageSize,JetInit 返回 -1213
我正在尝试读取一些现有和未安装的 esent 数据库文件(如 Windows.edb)。我一直在相当成功地玩一些 edb 文件。但是,当我尝试使用不等于 8192 的 PageSize 打开数据库时,我收到错误消息。
这是我的代码(没有错误处理):
FError := JetSetSystemParameter(@FInstance, nil, JET_paramDatabasePageSize, FPagesize, nil);
FError := JetCreateInstance(@FInstance, 'EDBInstance');
FError := JetInit(@FInstance);
FError := JetBeginSession(FInstance, @FSessionId, nil, nil);
FError := JetAttachDatabase(FSessionId, FFilename, JET_bitDbReadOnly);
只要 FPageSize = 8192,它就可以正常工作。任何其他值(4096、32768)在返回 -1213 代码的 JetInit 调用中都会失败。如果我没有为数据库设置正确的 PageSize 值,我会在 JetAttachDatabase 得到同样的错误,我可以理解。但是我无法理解 JetInit 返回的第一个错误。我做错了什么?我希望 Laurion Burchall 正在阅读这篇文章!:-)
我正在运行 Windows 7 64 位。