SQL Server on Linux: Runs well in spite of internal quirks. Why?
Some limitations but most things work
First Look Microsoft has released a public preview of SQL Server for Linux, and I took it for a spin.
There are three supported platforms for SQL Server on Linux, these being Red Hat Enterprise 7.2, Ubuntu 16.04, and a Linux-based Docker engine. Installation on other versions of Linux may also work, although unsupported. The Docker image enables installation on Mac or Windows. Microsoft specifies a minimum of 3.25GB of RAM.
I installed on a modest 8GB dual-processor VM running Ubuntu 16.04 "Xenial" for testing. Setup involves agreeing a licence and setting an SA (system administrator) password. I then installed command-line tools, sqlcmd (execute SQL queries) and bcp (bulk copy). The install script prompts you to enable automatic start-up.
What is SQL Server on Linux? It appears to be essentially the same code as Windows SQL Server running on a compatibility layer, called the SQL Platform Abstraction Layer (SQLPAL), which maps Windows API calls to OS system calls. Also in the mix is a piece called SQL OS, described as a "user mode operating system", which abstracts the hardware and provides services such as task scheduling, memory management and exception handling. SQL OS has been in SQL Server since 2005; it was not developed for Linux, but has now been extended.
This means that even on Windows, SQL Server has long used some virtualisation techniques.
Microsoft's slide showing the SQLPAL architecture
While SQLPAL seems to be based on a Microsoft Research product called Drawbridge, it is not the same. Long-time SQL Server team member Slava Oks tweeted that "it is SQLPAL and no longer original Drawbridge". He also stated that "we have removed layers from all critical paths" in order to optimise performance, though another tweet adds that "we haven't had a chance to do much perf work in many areas yet" so this may further improve.
SQL Server on Linux is the vNext version, which is set for general availability in 2017. Pricing and licensing will be the same as on Windows, and the same range of editions, from the free Express version upwards, will be available. Microsoft's Rohan Kumar, SQL Server general manager, told El Reg at the recent Connect event that "it's the same SKUs. It's another deployment option. If you have a SQL licence, you can choose to deploy on Linux."
Despite running the same code as on Windows, the Linux product does not have all its features. Unsupported features in the current preview include full-text search, replication, Stretch DB (extend a database to Azure), Polybase (query data warehouses), always on availability groups, Active Directory authentication, SQL Server Agent, SQL Server R Services, Analysis Services, Reporting Services, Integration Services, Data Quality Services, and Master Data Services. CLR (.NET Runtime) stored procedures are not enabled, according to Kumar, but the team is looking at future integration with the cross-platform .NET Core.
Some of these features may be enabled before general release.
SQL Server Management Studio (SSMS) remains Windows-only, though there is no problem connecting to a Linux SQL Server instance from Windows SSMS. Developers can also use the database tools in Visual Studio, which allow queries, table design, stored procedure editing, and more.