Nakul Vachhrajani is a Technical Specialist and systems development professional with iGATE having a total IT experience of more than 7 years. Nakul is an active blogger with BeyondRelational.com (150+ blogs), and can also be found on forums at SQLServerCentral and BeyondRelational.com. Nakul has also been a guest columnist for SQLAuthority.com and SQLServerCentral.com. Nakul presented a webcast on the “Underappreciated Features of Microsoft SQL Server” at the Microsoft Virtual Tech Days Exclusive Webcast series (May 02-06, 2011) on May 06, 2011. He is also the author of a research paper on Database upgrade methodologies, which was published in a CSI journal, published nationwide. In addition to his passion about SQL Server, Nakul also contributes to the academia out of personal interest. He visits various colleges and universities as an external faculty to judge project activities being carried out by the students. Disclaimer: The opinions expressed herein are his own personal opinions and do not represent his employer’s view in any way.
Those who have been following my blogs would be aware that I am recently running a series on the database engine features that have been deprecated in Microsoft SQL Server 2012. Based on the response that I have received, I was quite surprised to know that most of the audience found these to be breaking changes, when in fact, they were not! It was then that I decided to write a little piece on how to plan your database upgrade such that it works with the next version of Microsoft SQL Server.
Please note that the recommendations made in this article are high-level markers and are intended to help you think over the specific steps that you would need to take to upgrade your database.
Refer the documentation – Understand the terms
Change is the only constant in this world. Therefore, whenever customer requirements, newer architectures, and designs require software vendors to make a change to the keywords, functions, etc; they ensure that they provide their end users sufficient time to migrate over to the new standards before dropping off the old ones. Microsoft does that too with it’s Microsoft SQL Server product. Whenever a new SQL Server release is announced, it comes with a list of the following features:
- Breaking changes
- These are changes that would break your currently running applications, scripts or functionalities that are based on an earlier version of Microsoft SQL Server
- These are mostly features whose behavior has been changed keeping in mind the newer architectures and designs
- Lesson: These are the changes that you need to be most worried about!
- Discontinued features
- These features are no longer available in the associated version of Microsoft SQL Server
- These features used to be “deprecated” in the prior release
- Lesson: Without these changes, your database would not be compliant/may not work with the version of Microsoft SQL Server under consideration
- Deprecated features
- These features are those that are still available in the current version of Microsoft SQL Server but are scheduled for removal in a future version. These may be removed in either the next version or any other future version of Microsoft SQL Server
- The features listed for deprecation will compose the list of discontinued features in the next version of SQL Server
- Lesson: Plan to make the necessary changes required to remove/replace usage of the deprecated features with the latest recommended replacements
Once a feature appears on the list, it moves from bottom to the top, i.e. it is first marked as “Deprecated” and then “Discontinued”. We know of “Breaking change” comes later on in the product lifecycle.
What this means is that if you want to know what features would not work with SQL Server 2012 (and you are currently using SQL Server 2008 R2), you need to refer the list of breaking changes and discontinued features in SQL Server 2012.
Use the tools!
There are a lot of tools and technologies around us, but it is rare that I find teams using these tools religiously and to the best of their potential. Below are the top two tools, from Microsoft, that I use every time I plan a database upgrade.
The SQL Server Upgrade Advisor
Ever since SQL Server 2005 was announced, Microsoft provides a small, very light-weight tool called the “SQL Server upgrade advisor”. The upgrade advisor analyzes installed components from earlier versions of SQL Server and then generates a report that identifies issues to fix either before or after you upgrade. The analysis examines objects that can be accessed, such as scripts, stored procedures, triggers, and trace files. Upgrade Advisor cannot analyze desktop applications or encrypted stored procedures.
Refer the links towards the end of the post to know how to get the Upgrade Advisor.
The SQL Server Profiler
Another great tool that you can use is the one most SQL Server developers & administrators use often – the SQL Server Profiler. SQL Server Profiler provides functionality to monitor the “Deprecation” event, which contains:
- Deprecation announcement – equivalent to features to be deprecated in a future release of SQL Server
- Deprecation final support – equivalent to features to be deprecated in the next release of SQL Server
You can learn more using the links towards the end of the post.
A Basic Checklist
There are a lot of finer points that need to be taken care of when upgrading your database. But, it would be worth-while to identify a few basic steps in order to make your database compliant with the next version of SQL Server:
- Monitor the current application workload (on a test bed) via the Profiler in order to identify usage of features marked as Deprecated
- If none appear, you are all set! (This almost never happens)
- Note down all the offending queries and feature usages
- Run analysis sessions using the SQL Server upgrade advisor on your database
- Based on the inputs from the analysis report and Profiler trace sessions,
- Incorporate solutions for the breaking changes first
- Next, incorporate solutions for the discontinued features
- Revisit and document the upgrade strategy for your deployment scenarios
- Revisit the fall-back, i.e. rollback strategies in case the upgrades fail
- Because some programming changes are dependent upon the SQL server version, this may need to be done in consultation with the development teams
- Before any other enhancements are incorporated by the development team, send out the database changes into QA
- QA strategy should involve a comparison between an environment running the old version of SQL Server against the new one
- Because minimal application changes have gone in (essential changes for SQL Server version compliance only), this would be possible
- As an ongoing activity, keep incorporating changes recommended as per the deprecated features list
- As a DBA, update your coding standards to ensure that the developers are using ANSI compliant code – this code will require a change only if the ANSI standard changes
Remember this: Change management is a continuous process. Keep revisiting the product release notes and incorporate recommended changes to stay prepared for the next release of SQL Server.
May the power of SQL Server be with you!
Reference: Pinal Dave (https://blog.sqlauthority.com)
Good One Nakul!!
Behalf of Nakul, thanks to pinal for your work out on his motivation…
Behalf of Nakul, Thanks to pinal for your work out on his motivation…..!!!
very good article by Nakul, Really appreciate it..
I am on vacation so generally avoid technical reading but by looking at the subject i tempted to read this and now thinking this is worth reading…
Thank-you, ganeshnarim and Ritesh for taking the time out and reading the article!
thanks for very thorough guide, I would add two things to it:
1. For tools helping upgrade – SQL Server 2012 is in scope of new MAP toolkit, so you can easily check for deprecated features using it.
2. You can also add SQL Server 2012 upgrade technical guide (http://download.microsoft.com/download/9/5/3/9533501A-6F3E-4D03-A6A3-359AF6A79877/SQL_Server_2012_Upgrade_Technical_Reference_Guide_White_Paper.pdf) to the list of supporting documents.
Szymon: Completely agree with your suggestions! These are very useful tools & documents when planning for an upgrade.
Thank-you very much for sharing!
Nice Information ……
You forgot about Behavior changes
They should be documented.
I know what behavioral changes are but i am having difficult in explaining same to business people. Officially Microsoft says fixing these change is not must and it can still break your application. How do i convey my message on this topic ?
Apppreciate your insight. Thank you.
I want to upgrade an SQL Server 2008 R2 to SQL Server 2016. I would like to find the queries running in production (on SQL Server 2008 R2) that use discontinued features of SQL Server 2016. Is there a way to find these discontinued features?
The Data Migration Assistant checks only the database schema (tables, stored procedures, triggers, etc). I would like to capture a trace file from production, and find, if there are discontinued features in that trace file.