News
        
        Microsoft Previews Future of SQL Server
        
        
        
			- By Joey D'Antoni
 - 11/29/2016
 
		
        
Microsoft's recent Connect() conference provided a peek into the future of its flagship SQL Server RDBMS. The company emphasized that with SQL Server, it's providing tools for any developer to write any app on any platform.
The SQL Server news was sandwiched between other announcemens, such as Visual Studio for Mac and Microsoft joining the Linux foundation, but could provide guidance and insights for enterprises running the database in their data centers.
The public preview of SQL Server v.Next (that's not a typo) on both Linux and Windows was announced, along with major changes to SQL Server's  long-standing edition model, beginning with Service Pack 1 for SQL Server 2016.  Finally, as part of its commitment to honoring open source principals, Microsoft  announced it was making the SQL Server JDBC driver open source.
SQL Server Standard Edition Gets an Upgrade
The biggest news for many independent software vendors is  that SQL Server is moving to a more unified development model. Before this  month, SQL Server reserved many key features (In-Memory OLTP, Columnstore  indexes, data compression and partitioning to name a few) for the Enterprise  Edition of the product. This meant many independent software vendors (ISVs)  would write their applications to not take advantage of these features in the  RDBMS in order to give customers the ability to run on any edition. By offering  a more complete model in the on-premises version of SQL Server, Microsoft gives  ISVs a single development and allows them to take advantage of the features  that differentiate the platform from open source competitors such as MySQL and  PostgreSQL. Microsoft calls this the consistent programming surface area (CPSA)  and it is a big deal for ISVs.
What features remain only in Enterprise Edition (EE)? Mostly  scalability features -- while Standard Edition can only address 128GB of RAM,  EE is only subject to the limits of the operating system. There are also limits  around the amount of memory and CPU resources allocated for columnstore and  in-memory OLTP. Several other internal features like advanced scanning and  online table and index rebuilds remain Enterprise-only. Microsoft also has not  changed the model for high availability and disaster recovery -- Standard  Edition still only supports two-node failover clusters, and limits the  capabilities of AlwaysOn Availability Groups. In enterprise edition, customers  can use their secondary replicas to offload read workloads. However, in  Standard Edition the secondary replica (customers are limited to one) is  limited to failover uses only.
Other SP1 News
There were a several other major  enhancements to SQL Server 2016 SP1. For anyone who has built views or stored  procedures in SQL Server, you have experienced the pain of changing code for  revision or deployment. SP1 introduces 'CREATE OR ALTER' syntax that allows  developers to automate the deployment of their database objects and fits better  into the continuous deployment model that many modern applications use. The  other major enhancement is the addition of DBCC CLONEDATABASE command to SQL  Server 2016. This command was a late addition to SQL Server 2012 and 2014, and  with SP1 it gets added to SQL Server 2016 with some extra features. The biggest  extra feature is the ability to clone the data from the Query Store, which is  an execution plan management feature. This allows an ISV to profile their  application in a test environment, identify and fix problematic execution plans  and then clone that data to their customers. Note, that the CLONEDATABASE  feature is limited to metadata -- you would still need to use backup and  restore or import and export. There are several other new internal features  which expose more metadata about query operations, which should make tuning  problematic queries more intuitive for DBAs and developers.
 SQL Server on Linux and v.Next
SQL Server on Linux was announced in March 2016. This was  big news when it happened and it was mentioned that it would be released  sometime in 2017. However it was not clear how the versions would align with  SQL Server 2016 that was released in June. Well, with this month's  announcements everything became clear; there will be a new release of SQL  Server on both Linux and Windows in 2017. While the full set of upgraded features  hasn't been released, Microsoft announced support for graph functionality and  adaptive query execution for Azure SQL Database at PASS Summit in October,  which is usually an indication that those features are coming to the  on-premises product.
What does this mean for customers who just upgraded to SQL  Server 2016? Well, if you have software assurance, you can upgrade for free.  Upgrades are a fact of life with any modern software. With SQL Server 2016 and  above Microsoft has given you the tools to make these upgrades easier, low  risk, and require minimal outages.
SQL Server on Linux also made its public debut last week.  Even though it had been announced in March, access had been limited to a select  group of private preview customers. Microsoft is supporting many Linux  platforms including Red Hat Enterprise Linux, Ubuntu, and, interestingly,  Docker containers. The SQL Server Docker containers allow a developer running  on a MacBook to use Visual Studio Code develop against SQL Server in a  Windows-free environment.  
The best way to describe SQL Server on Linux is that  Microsoft's goal with the release is for it the same SQL Server no matter what  OS is runs on. A couple of features (SQL Agent, Always On Availability Groups)  are not in the product, but are slated to be added in the forthcoming community  technical previews. The areas that are different are around high availability  and disaster recovery, which are dependent on Windows Server Failover  Clustering in Windows. In Linux, these features will use open source options  like Pacemaker and Corosync . In the end, the process of developing and  administering SQL Server will be the same on all platforms. You can interact with SQL Server on Linux just like  you would on Windows, whether it's using BCP or SQLCMD on the Linux command  line, Visual Studio Code, or SQL Server Management Studio on Windows.  
Microsoft also introduced a command line tool called  "DMVTOOL" that allows SQL Server's dynamic management views to be accessed from  the command line. This allows system administrators who may have limited  knowledge of how to write SQL queries to get performance information without  touching the database.
What Is the End Game?
Microsoft has shown that they want to support all apps on  all platforms, and engage a generation of developers who have mostly worked  with open source tools throughout their training and career. This has been one  of the hallmarks of Satya Nadella's Microsoft. Microsoft seems to be doing the  same with SQL Server -- one platform whether your running on Linux or Windows,  or even Azure. The Azure SQL Database product is not 100 percent feature-complete  with SQL Server, but it has trended towards being so over time. Having the CPSA  allows that to happen, it greatly simplifies development effort and, in my opinion,  it also shows Microsoft wants to be thought of the premier database across all  platforms whether Linux, Windows or containers.
        
        
        
        
        
        
        
        
        
        
        
        
            
        
        
                
                    About the Author
                    
                
                    
                    Joseph D'Antoni is an Architect and SQL Server MVP with over two decades of experience working in both Fortune 500 and smaller firms. He holds a BS in Computer Information Systems from Louisiana Tech University and an MBA from North Carolina State University. He is a Microsoft Data Platform MVP and VMware vExpert. He is a frequent speaker at PASS Summit, Ignite, Code Camps, and SQL Saturday events around the world.