问题标签 [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.
esent - JetAttachDatabase 返回 -1213
我正在尝试读取一些现有的和未安装的 ESE 数据库文件。我一直在相当成功地玩弄一个 .dat 文件。但是,当我尝试使用等于 32768 的 PageSize 打开现有数据库时,出现错误。
这是我的代码(没有错误处理):
它在返回 -1213 代码的JetAttachDatabase调用中失败。难道我做错了什么?
我正在运行 Windows 7 32 位。
c++ - 如何使用 cpp 从 ESE 数据库中读取记录
我已经使用JetOpenDatabase API成功打开了 ESE 数据库。要读取记录,我打开“MSysObjects”表并将当前索引设置为“RootObjects”。
这是我的代码(没有错误处理):
要读取记录,我尝试使用JetRetrieveColumns函数从当前记录中检索多个列值。我也尝试过JetRetrievedColumn函数,但没有得到实际结果。
有人知道如何使用 cpp 从现有和未挂载的 ESE 数据库文件中读取记录吗?
sql-server - 带有 ASP.NET MVC 应用程序的 Windows Server 2012 停止工作(ESENT 错误)
该解决方案是一个 ASP.NET MVC 应用程序,使用托管在 IIS 中的 E/F,在 Hyper-V 环境中托管的 Windows Server 2012 R2 标准 VM 上。同一台 VM 正在运行 SQL Server 2012。
托管环境托管了 30 个其他解决方案,并且有大量可用磁盘空间,并且托管环境或 VM 没有已知的磁盘问题(chkdsk 和 sfc 已在 VM 上运行,未报告任何问题)。
问题是解决方案/服务器在 5-1 分钟的短时间内停止工作,并且每次我们看到来自 ESENT 的事件 ID 508/533 以及有关写入“C:\Windows\system32\LogFiles\Sum”的消息时。
在 sqlsvr 中看到了类似的消息,但通过授予每个人对 C:\Windows\system32\LogFiles\Sum 的所有权限来解决这个问题。
当问题仍然存在时,它会影响整个 VM,有时甚至无法通过远程桌面连接。
当问题发生时,我们已经看到大量打开的 SQL Server 连接,在为特定 Web API 方法引入缓存之前,我们实际上能够清空 SQL Server 连接池。以防万一我们将连接池从 100 个连接更改为 200 个连接,即使自从我们引入缓存以来我们还没有看到这个特殊问题。
所有 DbContext 实例都通过“使用”、ApiController.Dispose 覆盖或 Controller.Dispose 覆盖进行处置,并且仅使用一个 SqlConnection(用于日志记录系统)。
我怀疑问题不在解决方案范围内,并且 SQL Server 连接数过多与 SQL Server 无法写入磁盘的事实有关。
以下是最近三个“故障”的一些 Windows 事件日志摘录,其中包含有关问题之前和服务器自动恢复之后的 Web 请求数量的一些附加信息。
有什么建议么?
问题
前 10 分钟内的 Web 请求:1399 服务器恢复后前 10 分钟内的 Web 请求:1630
18-03-2015 20:07:20 833 MSSQLSERVER SQL Server 在文件 [C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\ 上遇到 1 次 I/O 请求需要超过 15 秒才能完成数据库 [Xxx] (5) 中的 MSSQL\DATA\Xxx.mdf]。操作系统文件句柄是 0x0000000000000A7C。最近的long I/O的偏移量是:0x000003e104e000
18-03-2015 20:07:40 833 MSSQLSERVER SQL Server 在文件 [C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\ 上遇到 1 次 I/O 请求的发生时间超过 15 秒数据库 [Xxx] (5) 中的 MSSQL\DATA\Xxx_log.ldf]。操作系统文件句柄为 0x0000000000000A8C。最近一次long I/O的偏移量为:0x0000007f203000
18-03-2015 20:08:16 533 ESENT svchost (1740) 请求写入文件“C:\Windows\system32\LogFiles\Sum\Svc.log”的偏移量 1806336 (0x00000000001b9000) 为 4096 (0x00001000)字节未完成 36 秒。此问题可能是由于硬件故障。请联系您的硬件供应商以获得诊断问题的进一步帮助。
18-03-2015 20:17:14 508 ESENT svchost (1740) 请求写入文件“C:\Windows\system32\LogFiles\Sum\Svc.log”的偏移量 1806336 (0x00000000001b9000) 为 4096 (0x00001000) bytes 成功,但操作系统需要异常长的时间(36 秒)才能提供服务。此问题可能是由于硬件故障。请联系您的硬件供应商以获得诊断问题的进一步帮助。
问题
前 10 分钟内的 Web 请求:服务器恢复后前 10 分钟内的 696 个 Web 请求:614
19-03-2015 01:17:19 533 ESENT svchost (1740) 请求在偏移量 3067904 (0x00000000002ed000) 处写入文件“C:\Windows\system32\LogFiles\Sum\Svc.log” 4096 (0x00001000)字节未完成 36 秒。此问题可能是由于硬件故障。请联系您的硬件供应商以获得诊断问题的进一步帮助。
19-03-2015 01:33:02 508 ESENT svchost (1740) 请求在偏移量 3067904 (0x00000000002ed000) 处写入文件“C:\Windows\system32\LogFiles\Sum\Svc.log” 4096 (0x00001000)字节成功,但操作系统花费了异常长的时间(983 秒)来提供服务。此问题可能是由于硬件故障。请联系您的硬件供应商以获得诊断问题的进一步帮助。
19-03-2015 01:33:03 833 MSSQLSERVER SQL Server 在文件 [C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\ 上遇到 5 次 I/O 请求的发生时间超过 15 秒数据库 [Xxx] (5) 中的 MSSQL\DATA\Xxx_log.ldf]。操作系统文件句柄为 0x0000000000000A8C。最近的long I/O的偏移量是:0x000000a389d000
问题
前 10 分钟内的 Web 请求:服务器恢复后前 10 分钟内的 555 个 Web 请求:784
19-03-2015 03:33:51 833 MSSQLSERVER SQL Server 在文件 [C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\ 上遇到 1 次 I/O 请求需要超过 15 秒才能完成数据库 [Xxx] (5) 中的 MSSQL\DATA\Xxx_log.ldf]。操作系统文件句柄为 0x0000000000000A8C。最近的long I/O的偏移量是:0x000000aa95f000
19-03-2015 03:40:48 533 ESENT svchost (1740) 请求写入文件“C:\Windows\system32\LogFiles\Sum\Svc.log”的偏移量 3846144 (0x00000000003ab000) 为 4096 (0x00001000)字节未完成 36 秒。此问题可能是由于硬件故障。请联系您的硬件供应商以获得诊断问题的进一步帮助。
19-03-2015 03:40:48 833 MSSQLSERVER SQL Server 在文件 [C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\ 上遇到 1 次 I/O 请求需要超过 15 秒才能完成数据库 [msdb] (4) 中的 MSSQL\DATA\MSDBLog.ldf]。操作系统文件句柄为 0x0000000000000A90。最近的long I/O的偏移量为:0x00000000108000
19-03-2015 03:40:49 508 ESENT svchost (1740) 请求在偏移 3846144 (0x00000000003ab000) 处写入文件“C:\Windows\system32\LogFiles\Sum\Svc.log” 4096 (0x00001000) bytes 成功,但操作系统需要异常长的时间(36 秒)才能提供服务。此问题可能是由于硬件故障。请联系您的硬件供应商以获得诊断问题的进一步帮助。
19-03-2015 03:40:49 17894 MSSQLSERVER Dispatcher (0x1a88) from dispatcher pool 'XE Engine main dispatcher pool' Worker 0x00000000F03B8160 在节点 0 上似乎没有屈服。大约使用的 CPU:内核 0 毫秒,用户 0 毫秒,间隔:336140。
c++ - ESENT 二级索引损坏,必须对数据库进行碎片整理
我正在尝试通过 esent.dll 读取未安装的 EDB 文件。一切都适用于 4k 分页数据库,但是当我尝试读取 8k 分页数据库时,它返回错误 1414 -> 二级索引已损坏,必须对数据库进行碎片整理。但是使用 eseutil 进行碎片整理并不能解决问题。(eseutil 来自创建 .edb 的同一交换服务器的 bin 文件夹)
而且它不会附加数据库。在您看来,这似乎是什么问题?
c# - 尝试使用 ManagedEsent 访问/附加 ESE 数据库时出现问题
我正在尝试使用 ManagedEsent 库读取 ESE 数据库 (.edb)。但是,我在设置数据库时遇到错误。在附加数据库(调用 JetAttachDatabase())时似乎出现了错误。
我收到的错误消息是“软恢复旨在备份数据库。应该使用恢复”。
下面是我的代码:
我得到的例外是:
有什么想法可能导致这种情况吗?我附加的 .edb 文件可能无效吗?
winapi - 如何使用可扩展存储引擎开始多个会话
在 的文档中JetBeginSession
,它指出会话是定义事务的粒度单位,它定义了光标在当前打开的表中的位置,它定义了当前活动的索引。在一次会议上,没有其他事情可以做。但他们确实注意到:
为了增加对数据库的并发和并行访问,可以开始多个会话。
这就是我想要的。我想打开数据库的第二个会话。
背景
ESE 的运行方式有些复杂:
这一切都有效。
但是我们如何打开另一个会话呢?
ESE 文档虽然很少,但确实暗示了为同一个数据库进行多个会话的能力:
- 为了增加对数据库的并发和并行访问,可以开始多个会话。
JET_bitTableDenyRead
- 无法打开该表以供另一个数据库会话进行读取访问。(暗示有时它可以被另一个会话打开以供读取访问)JET_bitTableDenyWrite
- 无法打开该表以供另一个数据库会话进行写访问。(暗示有时它可以被另一个会话打开以进行写访问)JetOpenDatabase
- 对于同一个数据库,可以多次调用此函数。JET_bitDbExclusive
- 仅允许单个会话附加数据库。通常,几个会话可以打开一个数据库。 (强调我的)
天真的方法是开始另一个会话:
除了JetDetachDatabase
第二个会话中的调用挂起。
- 检查文档
JetDetachDatabase
没有帮助。 - 检查
JetAttachDatabase
我们遇到了一些令人担忧的事情。
有一个错误代码暗示尝试附加已由不同会话附加的数据库是错误的:
JET_errDatabaseSharingViolation:数据库文件已被另一个会话附加。
如何打开多个会话?
因此,现在与其太随意地连枷,不如寻求正确的方法。
如何使用可扩展存储引擎开始多个会话
奖金
我确实有些随意地连枷。如果呼叫JetDetachDatabase
挂起,我们就不要打电话了!它完全违反了记录在案的规则:
JetOpenDatabase
说我必须先JetAttachDatabase
打电话JetAttachDatabase
说我必须打电话JetDetachDatabase
但是尝试一下:
它实际上似乎恰好起作用。
...耶?
.net - 尝试打开 IE 10/11 WebCache.dat 时,ESENT 总是抛出 EsentPageSizeMismatchException
我正在尝试创建一个 powershell 脚本来读取存储在 AppData\Local\Microsoft\Windows\WebCache\WebCache.dat 中的 IE 10/11 互联网历史记录。
我正在使用Managed Esent +- 与 .NET 中的 Win32 Jet api 交互。
我的问题是我永远无法真正打开数据库,因为当我调用 JetAttachDatabase 时会抛出 EsentPageSizeMismatchException。在对这个错误做了一些研究后,我发现 IE WebCache 的页面大小为 32K。当我尝试通过将 DatabasePageSize 系统参数设置为 0x8000 来纠正此问题时,JetInit 开始抛出相同的异常。
这是我的代码
似乎 ESENT 引擎不喜欢具有非默认页面大小,但我已经搜索了互联网,似乎没有办法更改引擎页面大小。是什么导致了这个错误?
initialization - RavenDB ESENT 初始存储大小
任何人都知道是否可以选择为 ESENT 设置 RavenDB 的存储初始大小?
对于 VORON,它应该是,根据这个网站 - Raven/Voron/InitialSize。
谢谢
visual-studio-2010 - 尝试使用 ESENT
我一直在尝试从MS ESENT doc运行示例,我发现另一个示例 MS 示例在 VC++ 2010 Express 上编译得很好。但是,当我尝试任一程序时,我都会收到错误代码 0f -1216 记录为
在恢复开始或结束时检测到未完成的数据库附件,但数据库丢失或与附件信息不匹配。
由于这是新的发展,我不知道我可能需要做什么。有人看到这个错误吗?
.net - Esent Api - 检查索引范围是否存在
我想知道是否有办法检查 esent 索引上是否存在范围。
当我运行“TryMoveNext”或“RetrieveColumn”以外的其他方法时(即获取表名列表),范围正在重置。
这在某些情况下可能很危险,即:
- 我正在使用 TryMoveNext 和 Retrieve.. 方法迭代产品子集。
- 某个子程序正在重置范围。
- 我在没有收到通知的情况下获得全套产品。
如果用户打算查看他/她的产品篮,他们会看到其他人的篮。
我想检查索引范围是否存在,以便发出警告我它不再存在的断言。
是否可以检查 ESENT 中的给定索引是否有范围?
广告