Last year I wrote about how we need an Embedded Database for .NET applications. Microsoft's current .NET database lineup runs as data servers, which is completely inappropriate when you need a simple data format for a desktop application . My post was based on the problems I faced while working on an RSS aggregator built for speed and scalability - I spent all my time troubleshooting problems with open source embedded database engines (SQLite, SharpHSQL, Firebird), and eventually just gave up on the project for the time being.
Stefano writes about what could very well be the solution to this problem - SQL/e (Microsoft SQL Server Everywhere). There's more information on Steve Lasker's FAQ post, but Stefano does a great job of summarizing the FAQ:
Other thoughts I had while reading the FAQ:
- Since it's pretty much just SQL Mobile wrapped up in such a way that Microsoft can support it as a desktop database format, you can start developing against it today if you have VS2005 installed; it's just not supported. The only supported platforms until SQL/e is release are Mobile, Tablet, and Desktop if you have VS or SQL installed. Does not supported mean not allowed? I believe so - there's reference to license restrictions the prevent usage of SQL Mobile as is on unsupported platforms.
- Since there's no support for stored procedures, I'd assume the preferred data access method would be via an ORM like NHibernate. There's already an MsSql2005 Dialect for NHibernate, so hopefully it can be modified for SQL/e very easily.
- Steve indicates that this is just SQL Mobile with some restrictions lifted and deployment scenarios simplified, so this is a mature database engine. This database is used by Media Center PC and several other Microsoft applications.
- SQL/e is being considered a data format, which is why it's fine to rename the data files, associate them with your application, etc. Microsoft considers SQL Express files as executables since they can contain and execute code (CLR, xp_commandshell). SQL/e data files are just data.
- SQL/e supports Reporting Services.
- A CTP release is expected in June (at TechEd), with a final release by end of the year. Apparently it has to do with some deployment issues such as ClickOnce deployments without administrative rights; I'd much prefer that the June release had a go-live license without the advanced deployment features. I think my solution will be to use Firebird via NHibernate and switch SQL dialects to SQL/e when it's available.