SQL Server 2008 Upgrade AdvisorИсточник: blogstechnet
На тему совместимости вниз (backward compatibility) в BOL фигурируют три термина: discontinued, deprecated и obsolete, которые переводятся на русский как неподдерживаемые, устаревшие и obsolete. Наверное, стоило бы перевести как нерекомендуемые, но по русскому у переводчиков в школе было два балла - "Функции SQL Server, неподдерживаемые в этой версии", поэтому что говорить про SQL Server. Существует замечательный по простоте пост, где четко разъясняется, чем каждый термин отличается от остальных. Discontinued - это та часть функционала, которая отмерла в 2008-м. Использование discontinued функциональности вызовет в нем ошибку. Та функциональность, которая приговорена, называется deprecated, то есть пока ее использовать можно, но в следующем релизе она перейдет в ранг discontinued. Deprecated фичи перечислены. Наконец, obsolete - это нерекомендуемый функционал. Его использование не приведет к ошибке, однако появился лучший способ сделать то же самое. Понятно, что при переезде нужно в первую очередь лечить discontinued, иначе на 2008-м оно заткнется, и по голове за это нас не погладят. Существует тула под названием сабж, которая позволяет заранее перед переездом определить, что в коде и структурах данных требуется поправить. Она берется здесь и весит, смешно сказать, < 10 метров. Запускаем ее и указываем, какие из компонентов SQL Server мы хотим проверить на совместимость, иными словами, экземпляры каких компонентов советник будет искать на машине Server name. рис.1
Имя экземпляра выбирается на следующем шаге: рис.2
В качестве входа советник воспринимает одну или несколько БД, файл трассы, скрипт SQL. рис.3
В данном примере я подсовываю ему базу AdventureWorks с 2005-й версии и скрипт, который специально составил из discontinued и deprecated синтаксических конструкций, перечисленных по ссылкам выше. /* Скрипт, содержащий нормальные команды для SQL Server 2005, но криминальные с точки зрения SQL Server 2008 */
--Не поддерживаемые более: use tempdb backup log AdventureWorks_2005 with truncate_only use AdventureWorks_2005 if exists (select 1 from sys.database_principals where type = 'R' and name = 'Test') exec sp_dropgroup @rolename = 'Test' exec sp_addgroup @grpname = 'Test'
-- Deprecated, т.е. в 2008 поддерживаются, но в след.версии - не факт: select databaseproperty('AdventureWorks_2005', 'Version') --будет заменена на databasepropertyex exec sp_dboption @dbname = 'AdventureWorks_2005', @optname = 'trunc. log on chkpt.', @optvalue = 'true' --sp_dboption в целом заменяется командой alter database; в данном случае действие эквивалентно ALTER DATABASE ... SET RECOVERY SIMPLE select * from Production.Product with (fastfirstrow) -- хинт заменен на OPTION (FAST N) select * from Production.Product order by Name collate SQL_AltDiction_CP1253_CS_AS select * from Production.Product p, Production.ProductSubcategory sc, Production.ProductCategory c where p.ProductSubcategoryID *= sc.ProductSubcategoryID and sc.ProductCategoryID *= c.ProductCategoryID -- заменен на синтаксис ANSI left/right outer join declare @t table (fld1 text, fld2 image) --замена на varchar/varbinary(max) declare @db_id int, @tbl_id int; select @db_id = db_id(), @tbl_id = object_id('Production.Product'); dbcc pintable(@db_id, @tbl_id) Скрипт 1
Запускаем советника. рис.4
Внутри советника существует набор правил, которые он последовательно проверяет против всех объектов заданной БД и нагрузки в виде трассы или SQLного скрипта. Правила могут обновляться/пополняться; чтобы скачать свежую версию, надо нажать Check for updates на первом экране (рис.1). Для просмотра результатов надо нажать Launch Report в конце. рис.5
Найденные советником косяки выдаются в виде списка, упорядоченного по убыванию критичности косяка. Сначала идут красные значки, которые надо пофиксить в первую очередь (before), т.е. еще до переезда на 2008-й. Это, как понятно, discontinued вещи. Потом (after) желтые значки, с которыми можно жить, но стоит обратить внимание. Это, тоже понятно, deprecated. рис.6 Каждый значок можно раскрыть, чтобы почитать детали ругательства, а также, что более важно, место, на которое он ругается. Например, если в данном случае кликнуть Show affected objects, выведется кусок скрипта, в котором встретилась discontinued инструкция backup log ... with truncate_only. Куски в скрипте отделяются друг от друга разделителем GO, как задавалось на рис.3. рис.7 Upgrade Advisor является первым средством, которое нужно использовать перед переходом на новую версию, чтобы отловить и поправить discontinued моменты и затем после перехода, не торопясь, долечивать deprecated. К слову, не все deprecated фичи ловятся советником. Например, мы видим, что он совершенно спокойно отнесся к типам text/image. В следующей серии мы разберем более надежные инструменты выявления устаревших и нерекомендуемых конструкций. |