Отлов несовместностей. 2-я серия
В предыдущем посте для определения deprecated функциональности приложения использовались счетчики Performance Monitor категории SQL Server:Deprecated Features и DMV sys.dm_os_performance_counters (sys.sysperfinfo). Все хорошо за исключением того, что они ловят все в масштабах сервера, а хотелось бы ограничить масштаб проверки проверяемым приложением или хотя бы конкретной БД. Счетчики только сигнализируют, что такая-то deprecated фича только что встретилась, а в каком месте скрипта - неизвестно. При больших объемах кода лопатить все как-то накладно. Эти неудобства позволяет преодолеть второй способ, который использует профайлер. В профайлере у нас есть два замечательных события в категории Deprecation. Они называются Deprecation Announcement event class и Deprecation Final Support event class. Откройте скорее профайлер и отметьте оба этих замечательных события. рис. 1 Отметьте к ним за компанию также события в категории Stored Procedures RPC:Completed, SP:Completed, SP:StmtCompleted и в категории T-SQL SQL:BatchCompleted. Остальные события, которые были по дефолту отмечены, если вы использовали какой-либо шаблон трассы, разотметьте дабы не зашумлять картину. Пойдите в Column Filters и выберите какие хотите ограничения на ApplicationName, DatabaseName и пр. рис. 2 Запустите трассу. Перейдите в SSMS и начните прогонять несовместный скрипт из поста SQL Server 2008 Upgrade Advisor (Скрипт 1, часть 2):
Скрипт 1 Вернитесь в профайлер и посмотрите результат. рис. 3 Как и в случае Perfmon, все несовместности благополучно поймались, однако теперь вместе с ругательством можно наблюдать конкретный кусок кода, где она проявилась и куда, соотвественно, нужно лезть, чтобы ее поправить. Автор: Алексей Шуленин |