首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行提交/回滚时,ESENT记录是否刷新到磁盘?

执行提交/回滚时,ESENT记录是否刷新到磁盘?
EN

Stack Overflow用户
提问于 2014-11-26 10:05:25
回答 2查看 192关注 0票数 1

我正在使用ManagedEsent接口进行一些测试,我想知道这里是否有人能澄清这一点:

  • 在事务中,我执行更新(插入记录),然后回滚事务。

如果使用EseDatabaseView查看数据库,就可以看到表中列出的“未提交”记录。再去一次esent.dll并没有给我留下任何记录。

因此,使用esent,记录是不提交的(并且不可见);使用EDV (我猜它直接从文件中读取),记录就在那里。

这是“正常”行为吗,ESENT“总是”将记录写入文件,如果没有提交,它就不会读取它吗?那么,这是EDV中的一个bug吗?还是我漏掉了什么?

EN

回答 2

Stack Overflow用户

发布于 2014-11-26 17:59:05

与大多数数据库一样,esent使用的是事务。它们存储在与EDB文件相同的目录中的日志文件中。如果要访问事务日志文件中的数据,则需要将它们刷新到数据库中。使用以下命令执行此操作: eseutil /MH database.edb

有关esent事务日志的更多信息:http://support.microsoft.com/kb/240145/en-us

票数 0
EN

Stack Overflow用户

发布于 2014-11-28 18:24:13

从EseDatabaseView的描述('esent.dll (可扩展存储引擎的dll文件)不需要读取数据库‘)判断,听起来他们似乎试图直接读取数据库文件,而不是使用ESE。

数据库是否首先完全关闭?使用esentutl -mh [database name]确认,这将转储数据库头。寻找类似“肮脏关闭”或“清洁关闭”之类的东西。

脏关机:您可能会看到尚未提交(或回滚)的事务。您需要事务日志文件中的信息才能使其处于干净状态。清洁关机:一切都处于清洁状态。如果需要,可以删除日志文件。

我的猜测是数据库处于一种肮脏的状态中被关闭,并且工具正在读取尚未回滚的数据。

-martin

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27146241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档