Pregunta

We will soon be upgrading from a SQL 2008 R2 instance to a SQL 2016 instance.

One of our databases has an application which our supplier says is compatible up to SQL 2012 SP1, but not SQL 2012 SP2, 2014 or 2016.

Once we upgrade to SQL 2016 and change the compatibility level of the database to 110 (2012), would the fact that the application is not compatible with SQL 2012 SP2 have any effect?

¿Fue útil?

Solución

My initial answer referenced deprecated features instead of discontinued features. This has been corrected

Service Pack Levels (incl. RTM) are not the same as compatibility level settings. I'll explain:

Features in different SQL Server versions

SQL Server provides a rich set of features for different versions of SQL Server. These features can be removed from one version to another. Your application could be using individual system stored procedures, system functions or some other features that are no longer available.

Here an example:

Category            | Discontinued feature     | Replacement  
--------------------+--------------------------+-------------    
Transact-SQL syntax | COMPUTE / COMPUTE BY     | Use ROLLUP  

So if the application is using COMPUTE or COMPUTE BY, then this will be no longer work in SQL Server 2016 as it was removed in SQL Server 2014. The list of discontinued features from SQL Server version to SQL Server version varies.

References:
Discontinued Database Engine Functionality in SQL Server 2016
Discontinued Database Engine Functionality in SQL Server 2014
Discontinued Database Engine Functionality in SQL Server 2012
Discontinued Database Engine Functionality in SQL Server 2008 R2

Compatibility Level and what it isn't

When you set a compatibility level you are telling the database engine to behave in certain ways.

Compatibility level affects behaviors only for the specified database, not for the entire server. Compatibility level provides only partial backward compatibility with earlier versions of SQL Server. Starting with compatibility mode 130, any new query plan affecting features have been added only to the new compatibility mode. [...] Use compatibility level as an interim migration aid to work around version differences in the behaviors that are controlled by the relevant compatibility-level setting.[...] If existing SQL Server applications are affected by behavioral differences in your version of SQL Server, convert the application to work seamlessly with the new compatibility mode.

What you aren't doing is bringing back features. When you upgrade to SQL Server 2016 you are removing/altering SQL Server features, procedures, functions, etc. These features will no longer be available even if you set the database compatibility level to a "down level SQL Server compatibility level".

Reference:
ALTER DATABASE (Transact-SQL) Compatibility Level
(This link also contains a listing of compatibility level settings compared between version 130 and 120, and another for 120 and down level differences.)

So while you are retaining a partial backwards compatibility you might break your application because some features are no longer available (see example above)

Answer

As you correctly pointed out in your comment, compatibility modes in SQL Server 2016 are available from 140 through 130 and 120 and further down to 110 and 100, but compatibility modes do not magically bring back features that have been removed from a SQL Server version.

Service Packs can have an impact on the compatibility mode of the version you are upgrading. E.g if the SQL Server you are upgrading is 2016 RTM and you are upgrading to 2016 Service Pack 1, then the internal workings for compatibility level 130 can change. However these changes should not affect the down level compatibility modes. This is pointed out in the following article:

Starting SQL Server 2016, we promise that after upgrades there will be no plan changes if you stick with the old compatibility levels, like 120 or 110. New features and improvements will be available under the latest compatibility level only.

Reference:
Query Optimizer Additions in SQL Server 2016

Otros consejos

Most likely the application will work, however, generally when a vendor has this statement, they have not tested their application. They have not certified the application will still work once the SP or CU or version has been applied. Thusly, if you go to an "unsupported" version, they will not support you on any issues.

I would not rely on a vendor's website documentation as the end all statement for supportability. Sometimes, they have not updated their documentation yet. Give them a call to determine what the true support options are, and then get that in writing.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top