14

If we develop some software in c# (or basically .Net), we don't install visual studio to any client. The client just have to have required .Net framework (1.0, 1.1, 2.0, 3.0 etc) installed and we are good to go.

Same way, if we are making making an app in VC2008, he just needs to have Visual C++ 2008 runtime (available from MS site free, about 4-5Mb). So, basically, we just need runtime environment. but there isn't any SQL server 2008 runtime (or I am not aware of it?).

So, my question is if my software is using SQL Server 2008, what runtime (or anything else) will be required on client side for it to work?

Also, one more thing, I see there is an SQL Server express edition, which I can supposedly use in deployment, but it seems kinda heavy knowing that if my software if just 5, 10 or 20Mb I need to install about a gig just so user can run it.

Lastly, if I am using SQL Server 2008 Developer Edition (which I am, or enterprise one not sure) and I installed SQL Server express on client, wouldn't it cause some problem if my software uses some features that are not supported in express edition? (say number of database, or concurrent connection, or anything).

So? What runtime is required for it? And if installing sql server express is the only option, what if I am using some features that are not supported in express edition? Surely, I can't go on doing a full install of developer edition on each client!

EDIT: In case this is of any help, my current project is a library management system, and it will be installed the client (the computer of the librarian for whom I am making this), so there is no case of server-client here. So should I install sql express on his computer? Also, as YvesR pointed out in his answer, that link only shows three editions (main ones), but http://msdn.microsoft.com/en-us/library/cc645993%28v=SQL.110%29.aspx shows more detailed comparison. So, in this particular scenario that I just described, would it be sufficient if I just deployed and express edition on client's machine?

Now, about what I said about some functions not being available in express edition, http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx#CrossBoxScale shows that express edition is limited to a database of size 10Gb, now I know that is more than enough in the scenario I described above, but what if in some other case I need more than that? Than express edition won't do it, than how should I deploy?

Finally, http://www.microsoft.com/sqlserver/en/us/get-sql-server/how-to-buy.aspx shows two more edition, Compact and Developer, I know about developer but what is this compact edition? And more importantly, why are these not comared or listed here?

Edit 2: Its 4Gb, the limit, not 10Gb. 10Gb is in SQL Server 2008 R2 Express and above, 4Gb in SQL Server 2008 Express.
marc_s: Thanks for that!

Razort4x
  • 3,296
  • 10
  • 50
  • 88
  • The *Developer* Edition - as the name implies - is only legally allowed **in development** - you're not allowed to use this in production. – marc_s Jul 14 '12 at 07:15
  • If it's a system for just one person, then I'm pretty sure you'll have a hard time outgrowing the 4 GB database size for SQL Server Express up to version 2008 - and with SQL Server 2008 **R2** (and 2012), that size has been upgraded to **10 GB** - that should be plenty enough! – marc_s Jul 14 '12 at 11:20
  • @marc_s Crap! It's 4Gb in SQL 2008? wtf? Anyways, I won't outgrow that in a single user scenario, but in case I need large, and can't have a client-server setup, then what? And what's this compact edition mentioned in link I gave? Is it only for 2012, or also available for 2008? – Razort4x Jul 14 '12 at 11:41
  • 1
    Comapct Edition is a "SQL Server look-a-like" - it feels like SQL Server, it understands T-SQL but it's very limited - no stored procedures, not all data types are suported. But on the up side: it's totally contained in just a few DLL's - no server installation needed, it's just part of your application. Limit is also 4 GB for the single `.sdf` file that contains your database – marc_s Jul 14 '12 at 11:58
  • PS: it's 4 GB up to **2008** Express - as of **2008 R2** Express and onwards, it's 10 GB. – marc_s Jul 14 '12 at 11:59

4 Answers4

8

If you use a SQL Server database to persist your data in your application you need

a. client-server infrastructure where your client connect to a central SQL Server via LAN

b. or use a client installed sql server edition (which is what you want I guess). For this you can use SQL Server Express edition or just a MSDE (Desktop Edition).

See for more details e.g. this blog post http://searchsqlserver.techtarget.com/tip/SQL-Server-2005-Express-vs-Desktop-Engine-MSDE or google for it, plenty of information from MS itself about MSDE.

EDIT: Since 2012 there is no more MSDE, but SQL Server 2012 Express brings a mode like MSDE did. See here: http://www.microsoft.com/sqlserver/en/us/editions/2012-editions/express.aspx

And as you can see here: http://www.microsoft.com/sqlserver/en/us/editions.aspx, there shouldn't be a function that you use that isn't available for a desktop application imho.

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
YvesR
  • 5,922
  • 6
  • 43
  • 70
  • 4
    MSDE was the SQL Server **2000** version of "Express", really. From 2005 on, it was called *SQL Server xxx Express* – marc_s Jul 14 '12 at 07:12
  • @marc_s There are more edition than `YvesR` described. I have updated my question including that, and added some more details about my current work, see if you can have a look again! – Razort4x Jul 14 '12 at 10:28
  • 1
    @Razort4x 10GB of data is a lot. I have databases running with 4500 users for a quality management system and after 4 years of use it is still around 1GB. Depends on your application ofc, but if you dont move binary into it your application should be fine. And yes, I suggest you use a sql express edition with no gui setup for your project. – YvesR Jul 14 '12 at 10:55
  • @YvesR Thanks for that. yeah you know what, in this case (library management) it would be sufficient, which I did say in the question, but 10Gb is a lot, but exactly like you said, it depends on the application. Right now I have 4 database that exceed a gig, one is 2.2gb, 1.9gb, 3.4gb and 2.7gb, and no, I am not storing any binary, image (in hex or whatever), or blob, or any filestream type of data! So, it does depends on the application. :-) – Razort4x Jul 14 '12 at 11:03
  • @YvesR marc_s just told me that it's just 4Gb in sql server 2008, 10Gb in 2012, well that really suc*s! – Razort4x Jul 14 '12 at 11:44
3

OK let's back up a bit. Do you have a requirement for each of your software clients to have it's own local database? If this is the case there are far simpler ways of storing data on the client (I would suggest serialization to file as one approach).

If your requirement is to have each client connect through to a central database then you don't need any runtime components other than the .net core libraries.

tom redfern
  • 30,562
  • 14
  • 91
  • 126
2

There is no client runtime required for database access besides the .NET framework installed (which you need for all .NET executables anyway).

If you want the database to reside on the same machine as the client free options would be e.g. SQL Server Express or SQLite.

BrokenGlass
  • 158,293
  • 28
  • 286
  • 335
  • @Okay, but what is this Compact version, and why is it not listed http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx, but listed http://www.microsoft.com/sqlserver/en/us/get-sql-server/how-to-buy.aspx. ps: I have updated the question to reflect my current requirement! – Razort4x Jul 14 '12 at 10:32
1

Here are two ways for Windows Applications:

  1. Desktop application that will be used by each clients separately without assigning a computer as server. You only need to install SSMS and the application for your Clients. The Update/Delete/Insert operations will be done separately.

  2. Client-Server Approach, install SSMS and attach your DB on a computer. This computer will serve your clients as a server. Then install the exe file on any client computer, make sure the clients are connected to the server using the IP.

Shamal Sabah
  • 229
  • 2
  • 7