views:

234

answers:

4

Hi,

Is there a light weight version of SQL Server I could use that has the characteristics of:

  1. Free (assuming my winforms app is semi-commercial)
  2. Can be seemlessly packaged for deployment as part of the winforms click-once application? (i.e. ease in installation for the user).
  3. Light weight for the user (ideally something that just runs when the winforms application that uses it is running - but better than using XML sererialization for persistance).

Thanks

+10  A: 

Yes - SQL Server Compact Edition:

Build embedded database applications for desktops and mobile devices SQL Server Compact 3.5 is a free, easy-to-use embedded database engine that lets developers build robust Windows Desktop and mobile applications that run on all Windows platforms including Windows XP, Vista, Pocket PC, and Smartphone.

SQL Server CE is a set of DLL's you can ship included in your app.

SQL Server 2008 Express is also free, but it's a stand-alone server installation.

Marc

marc_s
Thanks guys - Am I correct in saying that both (a) sqlite and (b) SQL Server CE, can both be seemlessly deployed with one's app then? Any suggestions on which one I should look into first? As I'm googling I'm starting to get the impression that sqlite might be the most light-weight one I should dig into? Unless SQL Server CE itself has better integration for a .net developer using C# / Visual Studio for some reason?
Greg
I don't know SQLite too much, I must say - but SQL CE is definitely closer to "full" SQL Server so if you already know and use SQL Server, that might be easier to use. Also, SQL Server CE can be used with the ADO.NET Synchronization Services for occasionally connected clients - not sure if SQLite has such a support, if that's something you might need to use in your app
marc_s
SQLite is great but I also recommend SQL CE - we've used it for a while before moving to a stand alone DB, and aside from some issues with multi-process concurrency (which should work but some times failed transactions) it worked very well and was easy to manage. if you're already using the M$ stack it's a good choice.
Yonatan Karni
+2  A: 

I don't know about any such (Microsoft) SQL server version. But if I'm in such situation I'll definitely go for SQLite or Firebird

TheVillageIdiot
SQL Server Express is free, as is SQL Server Compact Edition.
marc_s
Yes of course they are and I'm right now working with SQL Express 2005, but considering his other requirements I suggested sqlite and firebird.
TheVillageIdiot
A: 

Best choice is SQLite. There's ADO.NET implementation on .NET so its as easy to use as any other DB. Well, good example is Google Chrome.

There's only one unresolved issue: security. It's a pain to restrict access to SQLite database file as far as I know.

terR0Q
you'd vote for SQLite over SQL Server Compact Edition terrOq? can I ask why (just to understand)
Greg
It depends. But as I know there are two major tips:1. SQLite is lighter. Unfortunately I made no personal tests (but can do), but have such an impression after some web-search :) For example: http://dotnetperls.com/sqlite-versus-sqlce2. SQLite provides memory operations.
terR0Q
Oh, forgot. SQL CE is a good choice when there are no memory issues and when ease of support is a priority (e.g. we have rapid experiment development or "my home" utility): it can be connected directly to SQL Management Studio that is a great tool.
terR0Q
+1  A: 

Compact: - you don't need to change logic of you application; - MS Sql Management studio could be use to edit,create data structure visually ;) - deployment, second time deployments more easy :)

SQLite: - look in google search for the problems:), there lot of people who works with it and have problems, not form begining but during implementation "conctetical" tasks /projects - no exists native visual interface to work with dbase (exist 3party products for that but they aren't free); - again 2nd, 3 ... deployments needs more attention,time money :) ...

so, for me is beeter to work with MSSqlCompact, because i am working with .net kind of projects, i have to support my results, i must provide stable application etc...

nocher
is it just a file that your deployed app works with? Or does it require it's own program installed before someone can use then install/use your app?
Greg