To me, the biggest surprise announcement coming out of Microsoft's Connect() 2016 conference last week wasn't that Microsoft was joining the Linux Foundation. Instead, it was that SQL Server Next would be "the same" on Linux and Windows Server, and be available for both by mid-2017.
I was surprised because the idea of "one SQL Server with support for two operating systems," seemed inconsistent with Microsoft's claim earlier this year that SQL Server on Linux would include a subset of features in SQL Server 2016 for Windows, a product which Microsoft only made generally available in June this year.
As The Walking Cat, @h0x0d, discovered by taking a peek into the public preview of SQL Server on Linux released last week, Microsoft seemed to be using the Microsoft Research "Drawbridge" technology to bring SQL Server to Linux.
Drawbridge is an adaptation of the Library OS concept on which Microsoft Research has been working for the past several years. It's a form of virtualization specifically for application sandboxing. Drawbridge played a role in getting the Bash shell to run on Windows 10, too.
A Microsoft spokesperson confirmed that Drawbridge, was, indeed, at the core of how Microsoft got SQL Server running on Linux.
"To enable SQL Server on Linux we have created the SQL Platform Abstraction Layer (SQLPAL), which evolved from Drawbridge," the spokesperson said when I asked.
So what about Microsoft's claim that "all features of the SQL Server Next database will be available in Linux and Windows"?
Microsoft's documenation for SQL Server on Linux clarifies things a bit here. Here's the specific wording:
"It's the same SQL Server database engine (for both the Windows and Linux versions), with many similar features and services regardless of your operating system."
Currently, quite a few of SQL Server for Windows' features are not yet available on Linux, though Microsoft's plan is to "increasingly enable" these during monthly updates during the preview program.
Here's what's not yet available in the SQL Server on Linux preview (as of November 16):
In the database engine
- Full-text Search
- Stretch DB
- Distributed Query
- System extended stored procedures (XP_CMDSHELL, etc.)
In high availability
- Always On Availability Groups
- Database mirroring
- Active Directory authentication
- Windows Authentication
- Extensible Key Management
- Use of user-provided certificate for SSL or TLS
- SQL Server Agent
- SQL Server Browser
- SQL Server R services
- StreamInsight Analysis Services
- Reporting Services
- Integration Services
- Data Quality Services
- Master Data Services
Here's a bit more clarification from the aforementioned Microsoft spokesperson:
"We are aiming squarely at feature parity over time, although some operating system specific elements in SQL Server which will be limited or unique for each operating system. There are a handful of features that will require more extensive integration and testing work with Linux and some of these features may be enabled post GA. We will prioritize these based on customer feedback.
"Most features of SQL Server are functions within the depth of the SQL engine and these features are all enabled in CTP1 because they have no interaction with the operating system or little interactions with the operating system and don't require any adjustments or additional testing. For example, ColumnStore, in-memory, query processing, transaction management and so on."
For anyone who wants to dig more under the covers, here's a getting started tutorial for SQL Server Next for Linux.