views:

110

answers:

7

We have a commercial off the shelf product which used a Access Database. Due to the limitations and corruptions involved in multi user environments we decided to move to SQL Express. However now asit turns our,deployment of SQL Express 2005/2008 is a nightmare. The list of dependencies these depend on just keeps growing. Can anyone recommend of alternative options to SQL Express which is

  1. Easy to Deploy
  2. Has all SQL Express features
  3. Easy to backup
  4. Can be migrated to SQL Server Edition if needed
  5. Has a small footprint

Any help appreciated.

Update: Our current SQL Express Install is done using a 3rd party installer package, and so the end user does not see any SQL Express related install screen. And yes it need to be a single package, click and magically the app appears on the desktop type of install. Our end users are just not savvy enough. From my recent experiences with our deployment,SQL Express inntaller has just too many dependencies. If I was to include all these in my installation it blows up my install size unecessarily.

+5  A: 

You're probably not going to find something with the exact same feature set as SQL Express. However, SQLite meets at least 1, 3, and 5, and it's very popular (including with proprietary apps like Mac OS and Skype).

Matthew Flaschen
Seconded, it's very easy to embed and you can't beat a public domain license
Jeduan Cornejo
Yeah, but the migration path to SQL Server, and feature parity, stinks. (I'm a fan of SQLite for certain projects, but if you need SQL Server compat, it's not great...)
Reed Copsey
+1: I wouldn't put the onus on the db platform to be easy to migrate to SQL Server, that pretty much decimates your options. Instead, code against interfaces (or abstraction layers if your language does not have interfaces), and use ANSI SQL wherever possible. Reduce reliance on vendor-specific features and language enhancements. Then you can easily add support for more db platforms when necessary.
RedFilter
SQLite is not good for multi user environments
Hugues Van Landeghem
My understanding is they're moving /away/ from multiple users concurrently accessing the database.
Matthew Flaschen
+2  A: 

This is going to be the problem:

Has all SQL Express features

Really, if you want to succeed, you need to define precisely what you need.

I mean, surely, the access db you've moved from didn't implement all MS SQL express features, did it?

I can write down a huge list of free/open source database products that you could possibly use, but it doesn't make sense if it is not clear what features you do and which you don't need.

Roland Bouman
+2  A: 

Virtually all of your requirements are pretty subjective.

  1. How easy to deploy does it need to be? XCopy? Fully self-contained MSI? No external dependencies?
  2. All of them? Can you actually produce a list of features that you need? No other product has exact feature parity with SQL Express. For example, do you really need the Service Broker?
  3. Again, how easy? Do you need a managed interface, or will a procedural SQL command work?
  4. From what perspective? If you're talking about just moving files, then Express is the only option. If you're talking about the ability to import and export data, that's entirely up to you.
Adam Robinson
A: 

The best option I've found is VistaDB.

It supports (mostly) all 5 of your requirements.

For 1 and 3 - Deployment is purely xcopy based, so extremely easy to deploy and backup (single file DB).

2 and 4 are the trickiest (with any DB), as even SQL Express migration to SQL Server is not completely seamless (although very close). VistaDB can migrate more easily than any other DB I've seen, though, since it uses SQL Server syntax for nearly everything... It supports the "real" SQL Server DB features, too, such as foreign keys, stored procedures, T-SQL etc.

5 - It's a single, small (1,121KB in my version), managed assembly.

The main issue (potentially) here is that it's a 100% managed code base, so if you're not using .NET, disregard this suggestion. If you are using C# or VB.NET, however, VistaDB works very well for your requirements.

Reed Copsey
A: 

What dependencies are you referring to? Sure, the Management Studio needs the .NET framework, but that's hardly unreasonable these days.

SQL Express isn't a separate product that can migrate to SQL Server, it is SQL Server, but with some limitations.

I run a small company, and we use SQL Server for our larger customers, who usually already have a licence, and SQL Express (05 or 08) for our smaller ones, who probably won't have a database bigger than 4Gb, which is the main practical limitation.

Deployment is trivial - the installer just works, and migration to SQL Server is no more than a backup and restore, or even as little as installing SQL Server and just attaching the existing database.

Seriously, tell us more about these dependencies - you may be trying to solve the wrong problem. I've personally done lots of SQL Express installs, and I can't think of one that's been troublesome.

Backup is easy - you can use the management studio or roll your own. Small footprint, well how small?

ChrisA
@Chris: Running the installer yourself is trivial; integrating it into a managed installation process most certainly is not, unless you use either a third-party installer package or roll your own.
Adam Robinson
@Adam: Agreed. But for the sort of customer where you'd even consider SQL Express, how many of these are you going to need to do? I guess if the requirement is to have someone with no computer skills click one button, and have the db and app magically appear on the desktop, then yes, it's not quite so trivial. But is this really a database-per-desktop system? I do agree with your answer - there aren't enough specifics in the question, really.
ChrisA
@Chris: Not every package is an enterprise-level application. For example, the product that we recently shipped (where we had to choose SqlCE over SQL Express for this very reason) is designed to run on a laptop in a disconnected state. This isn't the exception for us, it's the rule. Obviously not everyone--or even most people--will be in this boat, but it's hardly a corner case.
Adam Robinson
@Adam: Point taken, as I hope I've indicated in my edit :)
ChrisA
... However... it was multi-user issues that made them move away from Access in the first place. So it does have a whiff of server/multiple clients about it. If so, and they've got no one that has the skills to click through the SQL Express installer with all the default options, server installation will be the least of their worries.
ChrisA
A: 

Sqlite is an open source embeddable db that's very fast, featured and portable. It allows you to generate databases on your local windows pc and xcopy it over and use it on a remote linux host.

Here are some high-level open source c# sqlite bindings that can run cross-platform on windows/linux using the same database. Check out the live sqlite web service examples (including source) if you're interested.

mythz
+2  A: 

PostgreSQL or Firebird.

dschulz
+1 for Firebird !!
marc_s