SQL Server 2008 r2 or PostgreSQL [closed] - sql

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am rewriting an application for my company which requires a database. We are currently using SQL Server 8 and I will be updating the database. My question is which database to use. I have been looking at both SQL Server 2008 r2 and PostgreSQL 9.
The database will be hosted on a Windows Server 2008 box and will be used for both the stand-alone app and an associated website written in .NET.
Some of my points of concern are:
Cost (obviously PostgreSQL wins out here).
Is it ready for primetime? I have read somethings about it being as good as SQL but would like some input from those using it.
Ease of use. I am very comfortable with SQL Server. I have been experimenting with PostgreSQL and while it is different than SQL Server I am getting the hang of it.
Speed. Is PostgreSQL as fast as SQL Server?
Can I use ADO.NET (.NET 4.0) with PostgreSQL and get the same functionality as Using SQL Server (will be using Linq or Entity Framework)?
I will NOT be converting our old database in SQL Server 8 to the new database so I am not concerned with any conversion.
I would be interested in peoples opinion of the two and if PostgreSQL is an acceptable solution for a business application given the above.
TIA
Brian

Necromancing here.
As pointed out by SteveG, SQL-Server Express is probably what you want.
But I've used SQL-Server, SQL-Server Express and PostgreSQL extensively, and you should be aware that SQL-Server Express has some more nasty limitations other than just the DB size:
Installation requires administrator privileges (and system restart)
ReportingService Express can only connect to a local database,
ReportingService Express cannot use other data-sources than the local sql server (no ODBC)
Some ReportingServices features are missing (e.g. graphs and CSV/XML export formats)
Constrained to the usage of 1GB RAM (Same in 2008/2012)
Constrained to a single CPU (newspeak: Limited to the lesser of 1 Socket or 4 cores)
no Table and index partitioning
no indexed views
no database mirroring
no database tuning advisor
no notification services
cannot send email (you might be able to do it using CLR-Stored procedures if you absolutely need to)
cannot use/call Web-Services (newspeak: no HTTP Endpoints)
no service broker
no fulltext and no semantic search (requires Express Advanced Services)
Profiler tool is not included with SQL Server Express editions. (there is SQL Express profiler on github)
Job Scheduling service is not available with SQL Server Express.
Data import and export feature is not available with SQL Server Express (can/must be downloaded)
does not come with SSIS
and as said
- 4GB database size (raised to 10GB in SQL 2008 R2 and SQL 2012)
Note that the limit of 10GB is neither 10GB nor 10 GiB (10 * 10243), it's actually 10'240 MB (10 * 1'024 MB), which is actually only 95% of the 10 GB that I'd have interpreted as 10GiB (10'240'000'000*100/10'737'418'240)
Add to this the limitation that Microsoft-SQL-Server will only ever run on Windows (to date, Linux-port of SQL-server is now coming, but only as CTP so far, and without BI).
So to the other points often overlooked:
In Windows 7, you can only have up to 20 concurrent connections but no more.
If you need more, you'll have to put your SQL Server installation onto a Windows Server OS.
That means if you use SQL-Server Express in a use case with more than 20 concurrent users, you'll still need a windows server license (the number of connections is not related to SQL Server edition, but to the operating system). You'll probably hit the 1GB RAM barrier before as bottleneck.
If you want to economize, you'll have to run the db engine on the same server as the web server, with all resulting performance penalties.
So now to your points (in order of importance)
5. Yes, there is Npgsql.dll (MIT license), so there is no need for ODBC
BUT: If your code uses System.Data.SqlClient everywhere (e.g. parameters, especially when copy-pasted all over the code) then you will have to re-write more than just the SQL code (Use the abstract classes in System.Data.Common instead, or or the System.Data.IDB* interfaces).
If your code copy-pastes SqlClient everywhere, it could be argued that it needs rewriting anyway.
Ease of use:
A little more of a learning curve than SQL-Server, but overall, not too different.
pgAdmin may not fullfill your requirements if you're used to SSMS, but there are several other management & development tools you can use (e.g. Navicat) that come very close to SSMS or even top it.
4.Speed. Is PostgreSQL as fast as SQL Server?
Yes and no. It can actually be faster. Granted, because SQL-Server has had much work done on the query optimizer, PostgreSQL might be a little slower when compared to the Enterprise Ultimate version of SQL-Server (or whatever the current name of the killer-edition is).
But, who ever has that version ? If you can use all your CPUs with all cores and all the RAM you want with PostgreSQL, you will always be faster than some cut-down Express or Standard version of SQL-Server with 1 CPU and 1 to a few GB of RAM (windows limits you to 64GB in 64-Bit afaik, with Linux you can exceed the 4 GB RAM per application limit even on a 32 bit processor with the bigmem kernel and can get it to address 64 GB RAM on a 32 bit processor, not to mention the 64-Bit limits), no matter how super-over-optimized the query optimizer is on SQL-Server. That said, my personal opinion from using both pg and ms is that PostgreSql has the better query optimizer, but that's just my opinion, I have no data to back that up. Besides, windows (Windows 7) is a slow operating system (again personal opinion, no data to back it up). So when you can let PG run on Linux in headless mode, it will almost certainly be faster than SQL-Server, even the enterprise ultimate edition.
Memory footprint
You can totally configure PostgreSQL. You are in charge of the configuration file.
Can be small or large depending on how you adjust your settings. The overall PG memory footprint to achive the same as SQL-Server on Windows at comparative speed will be quite a bit lower, this is especially true when you run it in headless mode on Linux (no server GUI).
Cost
Yes, quite obviously PostgreSQL wins out here.
Do not forget: It's not just the Server licensing costs we talk about, but also the operating system, and remote access (e.g. additional very expensive Citrix licenses on Windows compared to free SSH access on Linux).
And the other thing: PostgreSQL is OpenSource and Free. If you compare it to SQL-Server, you should not compare it to the Ultimate Enterprise Edition of SQL server (and windows server), but with the version you could actually afford. PostgreSQL however will always be the one free ultimate all-inclusive all-free all-opensource BSD license edition. If you compare the features of PostgreSQL to the Sql-Server Ultimate Enterprise Edition, you'll also have to compare the costs to the ultimate enterprise edition as well (and in 99% of cases, you'll find it not worth the price).
2. Is it ready for primetime?
Yes actually Skype and WhatsApp runs its database on PostgreSQL.
You'll find it has some problems (bad error messages - connection disconnected) when you try to run a 50+ MB insert scripts, but Microsoft's SSMS crashes long before that amount.
Summa summarum, PG probably is more ready for PrimeTime than SQL-Server.
PG has has had paging for almost 10 years now (MySQL as well as SQL-Standard syntax compliant) , SQL server just got that feature with SQL-2012, only standard-compliant.
You can simply xcopy deploy PostgreSQL, works perfectly without admin rights
PG has XML support, just like SQL-Server
PG has JSON support, SQL Server? I believe they are still fully invested in thinking that XML is the future - and purposely crippling the web as a platform. (they are adding JSON support now for SQL-Server 2016 CTP, but it stores data as nvarchar, so you won't be able to set (fulltext) indices on specific JSON-fields like you can on PostgreSQL)
PG has HSTORE support (associative array column), SQL-Server doesn't
PG has array columns. Arrays are a core part of programming, except in SQL Server, where they don't exist (try parametrize an IN-clause)...
PG has had spatial support for a long time, SQL-Server's spatial support is relatively new and relies on .NET extensions and is object-oriented (hello RELATIONAL database? )
PG has the better and faster fulltext search (personal opinion, not backed up by data because it's as clear as it's clear that Google-Chrome is faster than IE 8)
PG has companies offering commercial support, just like Microsoft does for SQL-Server; the advantage is that you actually get your bugs/feature-requests fixed for your money on PG support. You probably know Microsoft support, so I'll spare you any further rants of mine ...
PG has IPv6 support, Microsoft ?
PG performs normal under heavy load, with SQL-Server on Windows we've had some strange issues that appear and disappear at random (Heisenbugs ?).
SQL Server still to this day deploys pessimistic concurrency out of the box, PG doesn't
Compression out of the box. In SQL Server, compression is an "Enterprise Edition+" feature which means you are spending the cost of at least 1 dev in order to get the ability to use compression. Once you have paid for that ability, you still have to figure out how to implement it. Postgres does this for you out of the box, automatically and for free.
Concurrent Index Creation. This yet another feature that SQL Server is capable of doing, but only if you are able to afford Enterprise Edition. Postgres has your back on this and you can leave your wallet at home.
Indexable functions – sargability. In Postgres, you can actually index certain functions and maintain sargability. With SQL Server, BOOM - table scans - adios performance
PG employs Unicode (UTF8) by default. No longer can an incompetent predecessor cripple the entire application with horrible varchar and missing N' for string datatype like they do in SQL Server. The N' syntax still works though, so no compatibility problems if you use them.
PG supports recursive cascaded deletes, SQL server doesn't support that at all (though it actively tells you when you want to put the cascade on the referential constraint)
PG supports GREATEST(value [, ...]), LEAST(value [, ...])
Microsoft: CASE WHEN HugeExp1 > HugeExp2 THEN HugeExp1 ELSE HugeExp2 END) ...
CASE WHEN N > 2 THEN 'ROYALLY SCREWED' ...
or this very maintainable gem
SELECT ( SELECT MIN(Price) FROM ( VALUES (123),(456) ) AS AllPrices(Price) )
PG supports UTF-8 CSV files since ever, SQL server doesn't support UTF-8 CSV files prior to SQL-Server 2014 SP2 (try import the MaxMind GeoIP database - you need to write your own program for SQL-server...).
Drawbacks of PG:
Windows version ain't as stable & fast as the Linux version
No free BI-tool like SQL-Server-Reporting-Services (ok there is Eclipse BIRT, but it runs on JAVA).
On the other hand, for a bit of money you can get stimulsoft reports, which has more export formats than SSRS, and actually renders fine in browsers other than IE as well as IE > 8, unlike SSRS (2005 - 2012 so far, and so far I read SSRS 2014 is no different than 2012).
That said, if your only problem is fulltext-search with SQL-Server Express, you should take a look at Lucene.NET (Apache License).
Also, be careful if you're thinking about using SQL-Express in production:
So far we’ve considered only a few of the most obvious limitations,
but the point is that what seemed like a great idea driven by the
thought of considerable cost savings could end up being an absolute
disaster for your business. Worse, any initial cost savings you gained
from using a free product could be easily negated down the road by the
cost of disaster recovery and the damage to your business’ reputation
while an important database is down. So needless to say, despite the
appeal of its zero dollar price tag, SQL Server Express is definitely
not the right database solution to power your business.
Source: bitwizards.com

This really depends on your DB size and your comfort zone.
SQL Server Express edition is a fully functional free database up to 4GB in size; perfectly adequate for most small to mid-sized apps. (aside - IMHO, MS Licensing was the best thing ever to happen to the open source community!!)
PostgreSQL is a fully functional, free database w/o the 4Gb limitation - however, PostgreSQL follows the Oracle style of SQL and database management. If you're not familiar with that, you can run into some gotchas.
Throwing Dot Net into the mix adds a not insignificant wrinkle. Can you use .Net with PostgreSQL? Yes, but Dot Net will work better with SQL Server. Are you comfortable writing complex ODBC interface code? If yes, PostgreSQL remains a contender. If not, you'll be better off with SQL Server.

From my own personal experience, I find that PostgreSQL runs better on a linux box - lose the windows OS. I'm not very familiar with SQL Server, but I have had no issues with speed or flexibility in working with Postgres. While I can't speak to ADO.NET, I have had much success with using Postgres in the real world (under constant load). In your case, the only variable I could see is integration with ADO.NET. http://www.devart.com/dotconnect/postgresql/ may be a starting point.

As some mentioned above, this really relies on how big your DB will have to be.
Especially the difference price of a CPU-core vs the price of the licence for that core is really heavy.
CPU costs nothing in this comparision.
So if you need 16+ Cores, i would give Postgres a chance.
you will be able to buy a lot more cores for your Postgres server with the saved money.
I am Software developer, and the customers we have, have to pay much more for the Sql Server License than for all the other things together: softwaredevelopment, Clienthardware, Serverhardware, DB-Administration and so on.
Most of the time its cheaper, to buy new hardware, than to optimize your code.
But thats not true for the SQL Server CPU.
(however, you can still invest in Ram/HDDs without raising license costs)

I haven't tried using PostgreSQL with ADO.NET, but from my experience using it with MySQL, you might be better off sticking with SQL Server if you plan to use LINQ to SQL or Entity Framework.
While there are probably third party libraries that will allow you to integrate those technologies with PostreSQL, I think you'll find that things will go a lot smoother with SQL Server. Pretty much all the nice tools built into Visual Studio that make those technologies so easy to work with will only work with SQL Server.

Related

If I'm using PostgreSQL, do I need a server too? Like AWS RDS?

In my CS program, I was told I should learn SQL for my databases.
If I'm using PostgreSQL, do I also need a SQL server to go along with it? Is PostgreSQL a language, a server, or both? Is there even a SQL language or is it only servers?
Background: I downloaded Postgres because hey, that has SQL in the name, it works and I'm under the impression it's a pretty good choice anyway. But I couldn't figure out through their website if it needs a companion server, so I went looking for one and found AWS RDS.
The impression I have is that Postgres is the language and AWS RDS is the server, and they serve different functions. But I'm not sure about any of that.
Seems you're learning too many new topics at the same time.
Ok. I'll try to answer.
SQL stands for 'Structured Query Language', and serves as a 'standard' for many vendors that in much ways respects its fundamentals. Oracle, MySQL (now owned by Oracle), MariaDB and PostreSQL are some vendors.
Main thing with SQL code I would recommend you to identify every time you look at it, is to understand if it belongs to DML or DDL. DML stands for 'Data Manipulation Language' and refers to SQL instructions which 'modifies' data. DDL stands for 'Data Declaration Language' which defines or 'alter' de structure on which data will be stored.
Another important concept is atomicity of data manipulation. You can confirm a change or roll it back before it is persisted. This thing corresponds to 'commit' changes or do a 'rollback'. It's some kind of advanced concept, but generally happens "automatically" with standard client configurations. Later, you would have to know about it while programming some system module which interacts with databases.
When you think of the SQL 'server', it refers to the software configured/installed which has the responsability of manage persistence of data within some kind of 'instance' of persistence, allocated in some system with data storage capabilities. AWS implements this service in the cloud, and RDS is the product which supports many kind of SQL flavors to choose (Oracle, Postgresql, etc.)
If you are comfortable with Docker, I recomend you learn the basics which would help you setup and destroy databases many times, which is useful to develop and test locally. Next command, let you start a Postgresql database configured with open port 5432. You can see the server log through docker and use some SQL client to get connected. When you press Ctrl+C everything will be deleted. Of course there are other ways to keep data persistent, but this command would be an easy starting point.
$ docker run --rm -p 5432:5432 --name some-postgres-container-name -e POSTGRES_PASSWORD=mysecretpassword postgres:13.3
Side note: it's better to get used to work with specific docker image versions always (not 'latest').
More details of it usage here: https://hub.docker.com/_/postgres/
if I'm using PostgreSQL, do I also need a SQL server to go along with
it? Is PostgreSQL a language, a server, or both? Is there even a SQL
language or is it only servers lol? I'm genuinely trying to figure
this out myself, but basically everything I read is beyond my scope of
competence and confuses me more. I'm learning the syntax of SQL well
enough, but I'm so confused about everything on the most fundamental
level.
By the way "SQL Server" is Microsoft's SQL flavor, just another one. Don't be confused with the concept of having some SQL server configured.
Yes, you can think of PostgreSQL as a language too, which shares most of its syntax and semantics with other SQL vendors. Yes, there is a 'basic' SQL language shared and compatible between all vendors; some share more aspects than others. In terms of Venn diagrams, you can think of many circles representing each one, Microsoft's SQL Server, Oracle SQL, PostgreSQL, MySQL, etc. sharing the very most of its elements, where each element is a SQL instruction.
When dealing with Databases in general, keep in mind that they helps to modelate situations of 'real world' scenarios or software systems. SQL allows to 'talk' to implementation of "Relational Databases" wich is one kind of database modeling, but there are others too. ER Diagrams helps to represent the 'structure' of a database in a conceptual manner. I like DBeaver because it has an integrated ER diagram generator wich helps to understand the structure of a given database instance.
I have used Postgres and it is an excellent product (and free).
I would install it standalone first. It does come with its own client tools, which you use to communicate with the database server, which runs independently as a service. However, you might be better off installing something like SqlWorkbench as a client tool (which I use). In the config you specify the machine Postgres is running on (which can be your local computer for testing purposes) and the port to connect on. Essentially, the client sends your instructions to Postgres server and the server returns the resultsets associated with your instructions. The client also formats the resultsets into a nice readable "spreadsheet" format with rows and columns.
First I'll try to answer the questions you asked. There is a SQL language, but in practice it is not strictly standardized. There are many offerings for databases and database servers. Many of these are discussed below.
Any database you pick will give you the chance to learn basics of SQL queries and this knowledge will serve you well even if you switch to a different database later.
Specifically, when it comes to PostgreSQL, it is a Relational Database Management System. It is a software that operates as a server. You can install it on your personal computer running Windows, Linux, or MacOS. You can also install in on a dedicated server computer where you'll get better performance and uptime. Further, there are many companies that offer PostgreSQL hosting including Amazon RDS and Google Cloud but they're not free.
For a CS student, PostreSQL installed on your personal computer might be a reasonable choice. But you have lots of options. Read on....
For a CS program, your choice of database will depend on:
what degree of portability you need
how much data you have
how many users will connect to database
what kinds of jobs you might pursue after graduation
Portability
If you think you want to ship your database with your application, then your best bet is probably SQLite. By some accounts it can handle several million rows worth of data and still be performant. However, it's not great if you need for multiple users to connect to the same database. Your data can get corrupted in many multi-user scenarios.
How Much Data and Users
For large data and large users, you'll want to consider the client/server heavy hitters:
PostgreSQL
MySQL/MariaDB
Oracle
SQL Server
These databases will support large quantities of data any many simultaneous connections. But if you want to distribute the database with your application, it's not a good idea. Or if you want to demonstrate your app, you need to ensure that a connection to a server will be available. All of these databases come with a free version, but the last two will have the most restrictions.
After Graduation
Now you're looking to the future and possibly what kind of skills you want to put on your resume. If you think you'll end up in a corporate environment that is already well established, they will likely already have a preferred database and it could be any of the ones listed here (SQLite or the "heavy hitters"). If you want to position yourself as developing apps with low overhead cost, you'll gravitate towards SQLite/PostgreSQL/MySQL. If you think you're going to be some kind of database administrator working in a buttoned-up corporate environment, those companies tend to favor SQL Server and Oracle.
Good luck. Any choice you make will probably be fine. Knowing some flavor of SQL is useful for your future endeavors.
SQL is a language like any other language but working on database. It is called SQL because it works on structured data like table (i.e rows and columns). After reading the documentation of PostgreSQL, I think we do not need any separate server installation. You can download it from here. If you are facing any issues with it I suggest using MySQL workbench. Although installation may take longer time, but its easy to understand.

Replacing SQL Anywhere DB in PowerBuilder Legacy System

I have inherited a legacy system written in PowerBuilder which connects to an SQL Anywhere 5.5 database via ODBC. The Sybase drivers are not 64-Bit compatible so this system is throwing errors and there are no updated drivers available. I do not currently have the budget to update the database to a current version of SQL Anywhere (which requires a /seat license) and I'm under the gun to get the system working on a 64-Bit PC.
Advice, please! Is MS SQL Express a good option?
Thanks in advance.
PowerBuilder is a 32-bit application even when run on a 64-bit OS. You will need the 32-bit version of whatever DBMS you decide on. I think that SQL Anywhere might be 16-bit, it is that old.
I think you'll find MS SQL Express very similar. One main issue is the default database owner. SQL Anywhere is normally dba while SQL Express is dbo.
SQL Server Express is a reasonable choice for what I can get from your described needs. IMHO, any RDBMS supporting 64-bit might be a reasonable choice as long as you take over the data migration toward this RDBMS.
The most crucial part, according to me, is the migration from a RDBMS to another. You'll have to make sure to replicate every exact details (tables, views, stored procedures, functions, etc.)
Another fact that makes me believe that SQL Server Express is a good choice is that they both are TSQL. A historic fact is that Microsoft has bought Sybase ASE to start their own RDBMS now known as SQL Server.
PowerBuilder shall see no difference between the RDBMS since it accesses the underlying database through ODBC. All you need is make sure your workstation has ODBC supporting 64-bit.

Database that requires no extra installation

I have developed C# application that stores and retrieves data from SQL database.
But when my client had to deploy the application he needed to install sql server express 2008 ,that is its requirement.Now he wants that software to install with no extra installing add-on.so i except for dot net framework there should not be anything extra to install.
i have seen some databases like SQL compact,SQL lite ,SQL CE and blackfishSQL but i really donot know that do they require extra install and what effort do i have to make to change my whole code according to selected database
I looked at this
Please help me
I suggest going with SQLite or Server Compact (SQL CE). They don't require extra install.
Another option is to include SQL Server Express in your setup project, so it will be installed automatically if needed.
SQLite has a reputation of being fast and robust.
However, if you like Microsoft products and you already have everything working in SQL Express, then SQL CE might be a better choice from development tools support point of view.
SQLite is by far the most popular option usually considered for such scenarios. It does not require any extra installation..the DB interface itself is available in a dll and all u need to interact with your database is the interface dll. As to the extent of efforts that would be required to port your application, it would depend on the extent to which you have used Sql Server specific SQL constructs..the closer your code is to ANSI SQL, the easier it would be to port it to any other ANSI SQL compliant database like SQLite. Usually the task becomes much easier if you have used ORM technologies in your application, since they provide an additional layer of abstraction between you client code and the database
I'm sure the original poster no longer needs this information anymore - but for the sake of others googling the same issue - let me add a bit of my own.
I'm only recently in the process of converting a C# program from using SQL Express to SQL Compact - and its relatively easy when compared to converting to a SQLite project. The code is extremely simple. Where in SQL Express you might use SqlCommand, this simply becomes SqlCeCommand. Very easy to convert from one to the other.

What are the compelling reasons to choose SQL Server 2008 over 2005?

I'm investigating the possibility of upgrading our SQL Server from SQL Server 2000 to either 2005 or 2008. There's a lot of concern over whether or not 2008 is really ready for us to use because the database is so critical to our product. What are the compelling reasons to use 2008 over 2005? Have you had good or bad experiences with 2008? I'm particurally interested in query performance, new features for our queries, and stability.
One good reason--Backup Compression in SQL 2008. SQL 2008 has 3 options for backups:
In SQL 2008 there are 3 options while backing up databases, these are:
No Compression (same as SQL 2005)
Server Setting (if server backup
compression setting is on/off - use
this setting)
Compression (Compress backup file
during backup)
SQL 2008 backup with compression is generally faster than SQL 2005 backup without compression (less file i/o with a compressed file)
Edit: We've been using SQL 2008 for a while now and have had no problems. In fact, working with the new features in SQL Management Studio (such as intellisense) have made some tasks easier.
AS for new features, I have to point out the new spatial datatypes, geometry and geography, which basically allow you to add actual longitude / latitude points and even cooler, bind those points to a geometry.
i.e. imagine a map with zipcodes, the geography representing the center of the zipcode, and the geometry the are the zipcode covers. Then you could use the built in new function of sql server to determine if a customer for instance is in that are.
Edit P.S. here's a link to a series of articles describing benefits / new features:
What’s New in SQL Server 2008 Part 3
I'd upgrade to 2008 because:
While you don't think about it now, 2005 will go "end of life" sooner and another upgrade could be forced before you are ready.
Everything 2005 can do, 2008 can do. But the opposite is not true. The worst thing to happen would be to upgrade to 2005 only to discover you need something with 2008 and have to upgrade again.
There are many little things improved or added in 2008.
I'd also ask why are you worried about going to 2008? If you are upgrading today, why go to a product that is 4 years old instead of going to the latest?
We have been using it for about 3 months now, and it seems pretty stable. We also upgraded from 2000 and it was pretty painless. One thing I noticed was the new MERGE statement, which is a nice way to do upserts.
I've poked at 2008 a bit, but haven't used it "for real" yet. I can only offer some highlights.
It is "ready for use". SQL Server has been a totally viable product at least since 7.0. If it was buggy, crappy, or generally worthless, its competitors (everyone who isn't Microsoft) would have made it pretty clear to everyone by now.
It's a new version, it will be supported by MS longer.
Many new and fancy bells and whistles. However, they are bells and whistles, they don't really add that much to "core" database functionality.
There are some serious additions, in particular the various new date and time datatypes. (And if they every get something like Oracle's grid computing, then I'll be really impressed.)
By and large, I believe its "you buy the 2008 license, you get to use 2005 or 2008, your choice". As such, you're better off using the latest version.

MySQL versus SQL Server Express

Did the recent purchase of MySQL by Sun and the subsequent buggy releases kill the MySQL brand?
I whole heartedly embraced MySQL when it first came out as I used to be a poor developer and all the RDBMs were too expensive. I have fond feelings for MySQL and their being able to compete with Oracle and SQL Server. I credit the original MySQL team for the existence SQL Server Express. I now use SQL Server Express instead of MySQL for just about everything. First, I do not like Sun and second, SQL Server Express is significantly more robust and 'Enterprise' than MySQL.
The only significant limitations on SQL Server Express are the 4GB db size and the lack of Agent. I find that the size limit is not a concern because by the time the db gets close to that size, the application should either be profitable (and you buy the license), or you should kill the product. The Agent issue is a nice to have, but not critical as you can work around it.
It seems that for db simpletons like me, SQL Server Express is easier to setup and use and is faster and more stable. And for gurus, they will use PostgresSQL...
Resolved:
So basically, we have a bunch of SQL Server fans (albeit open-minded) on stackoverflow. It looks like I'm in the right place. It's sad to see MySQL transform from something you cheer to something you pity. I hope the founders of the original company try a new endeavor. I absolutely do not judge them for selling to SUNW - work is naturally profit driven. I hope we get some people with FU money who don't care about profits who create some products like MySQL used to be. Othewise, MSFT might take away EXPRESS.
Having worked with both, I have to say that the limitations and/or bugs in MySQL were a big turn off for me... I don't like PHP, and while I respect the open source community for their advances with these two technologies I just can't see the elegance in the way either of them have been put together. But don't let my personal taste sway your judgement against MySQL.
I do all of my prototyping in SQL Server Express and most of my clients use full blown SQL Server 2005. The ease of transition from one to the other makes it a no brainer for me - I can take anything I wrote for SQL Server Express and put it straight in without worrying that the syntax might be different. The two limitations don't even really get in the way in a dev environment - it's only when you come to production that they would tend to be a problem.
For me, SQL Server wins the argument hands down.
So far no-one knows what Oracle is going to do to MySQL, not even Oracle.
I've done extensive testing of MySQL and would say that in terms of performance it is about at SQL Server 7.0 level. That is fine if all you need is the performance of SQL Server 7.0
At the enterprise level is simply doesn't compete. If you look at the fanfare surrounding MySQL 5.4 it says "now supports more than 4 processors".
Where MySQL scores highly is that it is so cheap that it makes a scale-out design feasible, in which case the raw power of an individual box simply doesn't matter.
There are quite a few ommissions in MySQL that will trap a SQL Server developer. No CHECK constraints, no index views, no separation of clustered indexes from primary keys. That said, it has a large number of useful features that are very useful to web developers.
The Sun/MySQL guys are remarkably honest about their product. They say exactly what the strengths and weaknesses are. If you are used to some of the big vendors sales tactics this comes as a massive shock. Ultimately this does inspire confidence in using the product because you know exactly what to expect. I would much sooner deal with a product that says "don't do this because this is beyond our limits" than one that says "our product is the cure for cancer" and it turns out it couldn't cure a simple hangover!
Having run both*, I don't think there's much question that SQL Server is overall a more full-featured product than MySQL (although I'd be interested to hear arguments to the contrary).
I wouldn't be overly concerned with MySQL bugs - just run a few releases behind.
Given that you have a Windows server, the only issue I can see is the prospect of acquiring a significant cost if you max out the resources permitted with Express and need to go to a full, licensed SQL Server 2005 (or 2008) instance. If you expect to scale to that level and can't afford the licence, then a free DBMS would seem to be the smart move now, and I'd also look at PostgreSQL, which may be a better alternative.
* and liked them both for different reasons, FWIW
This is a very old article. With MySQL 5.7.20 now, there is no reason to use MS SQL Server or any other commercial licensed database. We switched to MySQL for our high profile financial .Net app six months ago after getting tired with over $50K licensing cost for MS SQL server and this was the best decision ever. No licensing cost and MySQL is highly configurable, small foot print, performance better than MS SQL servers. So far no glitches, no issues. Replication is easy to setup and works like a charm. Did I mention, no money even when running on a 32 core server and having five replication server. MS SQL server costs $3000 per two core (in our setup this would come out to be in six figures). Pure stupidity to throw that money out for nothing. Our own benchmarks, MySQL is performing better than MS SQL server. We really like easily configurable events in MySQL in addition to it being free. Just one another point, it takes only a few minutes to install MySQL while it takes forever to install MS SQL server on a new computer. Don't know what MS SQL server needs to do for hours while MySQL zip file can be unzipped and two line command can configure it within minutes.
MySQL is still going strong, and will continue to.
Note however that SQL Server Express is limited in other ways; specifically, number of CPUs and limitation of RAM usage (1 GB).
Personally I prefer SQL Server over MySQL. It is much easier to work with. And applications properly developed for it can scale to enterprise level if you are careful.
I don't think that you liking Sun or the mySQL 'brand' should influence your choices too much - unless you feel mySQL will be run into the ground by Sun. Look at the performance, management and features.
SQL Express with advanced features looks interesting - now has reporting services. SQL Express also requires a windows license and any associated licensing you might need.
mysql could use http://jasperforge.org/ for reporting.
I like writing tsql more, but for any independent projects, I would likely use mysql due to its cost savings that could be passed on to the client - putting me above the competition. People like saving money, even if it is profit.