Как определить, используются ли устаревшие функции

Окружающий нас мир постоянно меняется, меняется и SQL Server. От версии к версии появляются новые возможности, а некоторые старые наоборот – исчезают. И если с новыми возможностями все просто – начинаем их использовать, то с устаревшими дела обстоят несколько иначе: в случае обновления SQL Server на новую версию, у нас могут перестать работать некоторые старые запросы. Устаревающий функционал (deprecated features), существует еще в течение нескольких редакций перед тем, как его полностью исключат. Таким образом, перед обновлением нам необходимо постараться определить, какие возможности в новой версии SQL Server исчезают и используются ли они на нашем сервере. Компания Microsoft публикует достаточно подробное описание изменений. Например, для SQL Server 2008 R2 можно прочитать здесь, а для SQL Server 2012 здесь.

Узнать, используется ли у нас устаревший функционал можно достаточно легко, воспользовавшись системным представлением sys.dm_os_performance_counters, которое выводит значения счетчиков производительности. С помощью такого нехитрого запроса можно вывести список всех устаревших функций и сколько раз они использовались с момента последнего старта сервера.

USE [master];
GO
 
SELECT instance_name, cntr_value
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%:Deprecated Features%'
AND cntr_value > 0
ORDER BY cntr_value DESC;
GO

Пример результатов:

Как мы видим из результатов запроса, названия говорят сами за себя: в качестве псевдонимов столбцов используются строковые константы, несколько старых системных таблиц, типы данных ntext или image и т.п. Далее вам остается только выявить, какие из этих опций будут удалены в той версии, на которую вы планируете обновиться и постараться избавиться от их использования.