esedatabaseview показывает незафиксированную запись
Я делаю некоторые тесты с использованием интерфейса managedEsent, и мне интересно, может ли кто-нибудь здесь уточнить это: внутри транзакции я делаю обновление (вставляю запись), а затем откатываю транзакцию. Если я посмотрю на базу данных с помощью EseDatabaseView ( http://www.nirsoft.net/), то увижу "незафиксированную" запись, указанную в таблице. Повторное посещение esent.dll не дает мне записи. Таким образом, при использовании esent api запись не фиксируется и не отображается, а при использовании EDV(я думаю, что она читает непосредственно из файла) запись есть. Является ли это "нормальным" поведением, esent "всегда" записывает запись в файл и, если она не зафиксирована, она просто не читает? Это ошибка в EDV, показывающая это тогда? Или я что-то здесь упускаю?
2 ответа
Как и в большинстве баз данных, esent использует транзакции. Они хранятся в файлах LOG, которые вы можете найти в одном каталоге с файлом EDB. Если вы хотите получить доступ к данным в файлах журнала транзакций, вам необходимо сбросить их в базу данных. Для этого используйте следующую команду: eseutil /MH database.edb
Дополнительная информация о журнале транзакций esent: http://support.microsoft.com/kb/240145/en-us
Судя по описанию EseDatabaseView ("esent.dll (файл dll Extensible Storage Engine) не требуется для чтения базы данных."), Похоже, что они пытаются прочитать файл базы данных напрямую, не используя API-интерфейсы ESE.
Сначала база данных закрыта? Подтвердите с помощью esentutl -mh [database name]
, который сбрасывает заголовок базы данных. Ищите что-то вроде "Грязное отключение" или "Чистое отключение".
Грязное завершение работы: вы можете увидеть транзакции, которые не были совершены (или откатаны). Вам нужна информация в файлах журнала транзакций, чтобы привести ее в чистое состояние. Чистое отключение: все в чистом состоянии. Вы можете удалить файлы журнала, если хотите.
Я предполагаю, что база данных была закрыта в грязном состоянии, и инструмент считывает данные, которые еще не были откатаны.
-Мартин