Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows 11 support #50

Open
mrthaggar opened this issue Dec 3, 2021 · 7 comments
Open

Windows 11 support #50

mrthaggar opened this issue Dec 3, 2021 · 7 comments

Comments

@mrthaggar
Copy link

The most recently available version does not work when attempting to access ESENT databases from Windows 11.

The error generated when attempting the call Api.JetAttachDatabase is:

InitializeConnection failed to initialise ESE database - Database engine is incompatible with database

Any ideas if/when this will be updated?

Thanks

@mwinterb
Copy link

mwinterb commented Dec 4, 2021

Are the database files from Windows 11, and you're trying to access them from a pre-Windows 11 OS? Or are you running your software on Windows 11?

@mrthaggar
Copy link
Author

mrthaggar commented Dec 4, 2021 via email

@mwinterb
Copy link

mwinterb commented Dec 8, 2021

I've been trying to find documentation stating it, but I haven't been successful. But: ESENT database files will contain backwards compatible-breaking changes with new Windows versions (I don't know how the Windows 10 series was handled, maybe only when LTSB versions of it / Server were released?). So Windows 11 can read files from Windows 10, which can read 8.1, which can read 8. But Windows 8.1 cannot read files from Windows 10. This is true even if you're not using any features from a later version.
Since ManagedEsent is a "thin" layer over the Windows esent.dll rather than a re-implementation of the database engine, there's nothing that can be updated.
I don't know if it's supported, but perhaps building https://github.com/microsoft/Extensible-Storage-Engine/ and this project from scratch (updating

private const string EsentDll = "esent.dll";
to point to your new DLL) would work if you only need read-only access (since writes may make the database unreadable on older OS's).

@mrthaggar
Copy link
Author

Thanks for the info.

I'll give what you suggested a try, and let you know how I get on.

@mrthaggar
Copy link
Author

mrthaggar commented Dec 14, 2021

Based on your suggestion, I rebuilt both libraries from scratch, and this time used the esent.dll I pulled from a Windows 11 installation.

The library is now working, as is able to read from the Windows 11 databases, on Windows 10.

Thanks for your help.

@CBenghi
Copy link

CBenghi commented Jul 26, 2022

Hello,
I wonder if there are any plans to start a distribution of the interop that packs the dll like suggested in this thread.
This would allow to read/write shared from multiple clients without concerns for the version of Esent.dll shipped with the OS.

As far as I can tell this would be compatible with the MIT licenses of the c++ and c# interop libraries.

Any views?
Thanks
Claudio

@hsing1120
Copy link

hi,mrthaggar
could you provide new dll for win11?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants