PostgreSQL on Windows is a viable option, but not the easiest to install. Follow the instructions contained in:
The basic idea is to first start ipc-daemon, then configure PostgreSQL similiar to how its done on Unix systems. Since the CygIPC package doesn't exist on the Cygwin mirrors, download the latest version from http://www.neuro.gatech.edu/users/cwilson/cygutils/cygipc/. Extract and copy the contents to /. Now you should be able to run 'ipc-daemon &' and continue with 'initdb' and so forth. See the PostgreSQL README file in /usr/doc/Cygwin for more information.
Here are some more links:
I've been running PostgreSQL under Cygwin for a little while now. It appears to be running quite well. Performance is good, and it looks like it requires less resources since it caches differently then SQL Server.
We've converted a Microsoft SQL Server database to PostgreSQL. This database has about 50 tables and 200 stored procedures. By creating a couple of filters (using Perl) I've managed to recreate the tables, data, and foreign key constraints. Rewriting thousands of lines of Transact-SQL in PL/PgSQL requires a fair amount of hand editting, since there are so many different cases to handle. For example, PostgreSQL procedures can't return multiple columned rowsets. Instead, views need to be created. Then the code that used to call the procedures needs to select from the view instead. Instead of passing arguments, WHERE statements must be used instead. Because the ODBC driver for PostgreSQL doesn't support the 'EXEC some_proc()' syntax, 'SELECT some_proc()' must be used instead. That also means that some_proc has to return something... even if it's just 0 or null or 1 or whatever.
The new version of PostgreSQL under Cygwin uses cygserver.exe instead of ipc-daemon.exe. The performance is better.