top | item 42696804

(no title)

m_st | 1 year ago

I so badly wish we could change a big Windows business application to use PostgreSQL rather than Microsoft SQL Server just because of the licensing costs. SQL Server is a fantastic product, but restricted to 128GB RAM and a few CPU cores or you have to start paying so much, that not even our biggest customers can justify it.

Migration isn't easy, as this venerable application uses ADO.NET Datasets with TableAdapters and plenty of stored procedures. The syntax is almost compatible though. But not enough unfortunately.

For our next product, we're sure to bet on PostgreSQL instead.

discuss

order

kylecordes|1 year ago

Yes, this is such a big challenge for commercial database products. PG is so great that it often makes the most sense to reallocate the money to more CPU/RAM/SSD, rather than licenses.

scarab92|1 year ago

I just wish it had columnstore support.

chasil|1 year ago

An enormous flaw of Sybase/Microsoft SQL Server is that it does not implement the SQL/PSM standard.

https://en.wikipedia.org/wiki/SQL/PSM

The syntax for this does come largely from Oracle.

"SQL/PSM is derived, seemingly directly, from Oracle's PL/SQL. Oracle developed PL/SQL and released it in 1991, basing the language on the US Department of Defense's Ada programming language."

In any case, I have thousands of lines of PL/SQL written by many people which are currently useless for SQL Server applications.

SQL Server should implement SQL/PSM. The sooner, the better.

For those trying to escape the licensing costs of SQL Server, Babelfish may be an option.

https://babelfishpg.org/

munchler|1 year ago

Sybase SQL Server hasn't been a thing for at least a decade. The Microsoft fork happened more than 30 years ago.

hodgesrm|1 year ago

> An enormous flaw of Sybase/Microsoft SQL Server is that it does not implement the SQL/PSM standard.

Why is this a problem? I've always enjoyed T-SQL. Right from the start it had a "scripty" feel and stored procedures were easy to code with it. We thought about implementing PSM at Sybase in the 1990s but there was little user demand. (Unlike row level locking, the lack of which undid Sybase SAP implementations...) Internally many of the engineers thought PSM was pretty awful to use. I never liked it myself.

belter|1 year ago

Test this:

"Goodbye Microsoft SQL Server, Hello Babelfish" - https://aws.amazon.com/blogs/aws/goodbye-microsoft-sql-serve...

Or the Opensource project: https://babelfishpg.org/

bdcravens|1 year ago

I evaluated this for our database and ran into many cases where it wasn't a 1:1 replacement, especially if you lean heavily on stored procedures. Additionally, our db library (it's a Rails app; the database was originally used with another language) needed features Babelfish didn't support. It may be worth another look for us, but I assume it still shouldn't be considered a 100% drop-in.

masfoobar|1 year ago

> I so badly wish we could change a big Windows business application to use PostgreSQL

This ^^^

A small businness I (no longer) work for was using Windows Servers, SQL Server, Classic ASP, .NET and other things. It was expensive!

I tried sooo hard to migrate to get them to realise the savings moving over to Linux and Postgres, and get their DATED software over over afterwards!

Well, it was Linux and MySQL/MariaDB but I have slowly grown fond of Postres over the last couple of years.

I will always remember (and find funny) when we purchased a server a third-party no longer wanted to support for us anymore (linux+php) and my boss said "they only pay £300 a year for that server" -- yep.

cheema33|1 year ago

We are in the same boat. An older application with lots of dependencies on MS SQL Server. We are slowly chipping away at it with our migration effort.

pmarreck|1 year ago

LLM's might be able to translate the stored procedure code without too much difficulty, and assuming you have test coverage. Might also do a good job of translating DDL code such as index definitions etc.

I too was impressed with SQL Server last time I used it (big note: SQL Server is one of the few commercial DB's that does real nested transactions; PG does not), but I get it.

dspillett|1 year ago

> SQL Server is one of the few commercial DB's that does real nested transactions

More or less. The default ROLLBACK behaviour is to roll back the whole nest. You have to use SAVE TRANSACTION instead of BEGIN TRANSACTION and specify the name in ROLLBACK. If doing this in a procedure that may or may not be part of a nested transaction (an explicit transaction wasn't started before it was called) you have to test to see if you need to BEGIN or SAVE¹ and what to do if a rollback is needed (you likely don't want to ROLLBACK everything if you used SAVE, but have no option if you used BEGIN). Not exactly intuitive. And saved transactions can cause excessive lock escalation, impacting concurrent performance.

SQL Server is generally a damned fine product overall, both generally and compared to a lot of other things emitted by Microsoft, but it isn't even close to perfect in some areas.

----

[1] ref: https://learn.microsoft.com/en-us/sql/t-sql/language-element...

cpursley|1 year ago

You're getting downvoted by gatekeepers but LLMs are amazing with SQL and this is a great use-case.