Sql-server – Changing compatibility level from 2008 to 2016

compatibility-levelsql serversql-server-2016upgrade

I have a database with hundreds of stored procedure, views, triggers, function, …
The database Compatibility Level is 2008 (100) and we would like to move it to 2016 (130).

The SQL Server version is 2016. We read that migrating the Compatibility Level could/would improve performance.

What is the best way to verify each object of the database to ensure working compatibility of the database? I already checked the "Upgrade Advisor" and it doesn't support the version of the database.

Best Answer

For this number of jumps in compatibility level (or if you are being appropriately paranoid with a production application, for any jumps in compatibility level) a full application regression test is the only way to be absolutely sure.

Even if you have ensured that all the matters listed in the release notes either don't affect you or have been mitigated, you might find instances where code is relying on officially undefined behaviour which has changed (changes like this may not appear in release notes). For instance, when moving some of our work from 2005 to 2008r2 we experienced problems with a change in how some (admitedly odd) queries using FOR XML generated their output.