(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Отлов несовместностей после перехода на SQL Server 2008. Часть 1

Будем считать, что мы благополучно перешли на SQL Server 2008, потому что сколько можно. Уже 2010-й год на дворе. После перехода бестолку ловить discontinued фичи в базах и скриптах, потому что все, что поленились заранее вычистить, проявится само. Оно попросту не будет работать. Придется исправлять в боевых условиях. Удачи и поменьше вам такого удовольствия, а мы сконцентрируемся на том, что называется deprecated и obsolete. В прошлогоднем посте, разбирая Upgrade Advisor, мы обнаружили, что не все инструкции такого типа он в состоянии отловить, и я обещал подогнать для этого более надежные инструменты. Одним из таких инструментов является обычный виндузовый Performance Monitor, точнее, счетчики категории SQL Server:Deprecated Features, которые SQL Server 2008 добавляет туда при своей установке. Их названия достаточно самоописательные. Например, экземпляр по имени Data types: text ntext or image означает, что где-то встретилось поле таблицы или переменная этих типов, которые надлежит переделать на varchar/nvarchar/varbinary(max) . Если сделать что-то вроде declare @t table (fld1 text, fld2 image), счетчик SQL Server:Deprecated Features\Data types: text ntext or image увеличится на 2, потому что за грех считается каждая несовместность (в данном случае - и text, и image), а не по строкам или операторам, в которых эти несовместности встретились. Откройте PerfMon и добавьте в сбор все экземпляры счетчиков категории SQL Server:Deprecated Features.

image

рис.1

Счетчики обнуляются при рестарте SQL Server и прирастают всякий раз, когда встретится какая-либо несовместность. Перезапустите SQL Server для чистоты эксперимента и посмотрите, как резко упали в ноль все графики. А, черт. Остановите Reporting Service и еще раз перезапустите SQL Server. Запустите типовую нагрузку, которую вы хотите проверить на вшивость. В смысле, на deprecated функциональность. Я в качестве типовой нагрузки возьму вторую часть (Deprecated) Скрипта 1 из поста SQL Server 2008 Upgrade Advisor. Давайте выполнять его построчно

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)

...

и смотреть, что происходит с графиками на PerfMon. Они, как и следовало ожидать, прирастают по мере происхождения несовместностей:

image

рис.2

Собственно, PerfMon здесь нужен только для наглядности демонстрации. По-хорошему, все его счетчики можно собрать на стороне SQL Server. В данном случае, поскольку это SQL Serverные счетчики, можно прибегнуть к Способу №4, заюзав DMVшку sys.dm_os_performance_counters (бывшую sys.sysperfinfo, которая, кстати, нынче является deprecated J):

select * from sys.dm_os_performance_counters where object_name like '%deprecated%'

image

рис.3

Например, посмотрим текущее показание счетчика несовместностей типа SQL Server:Deprecated Features\Data types: text ntext or image, выполним некоторый скрипт и снова проверим показания счетчика:

select * from sys.dm_os_performance_counters where instance_name = 'Data types: text ntext or image'

go

declare @t table (fld1 text, fld2 image)

go

select * from sys.dm_os_performance_counters where instance_name = 'Data types: text ntext or image'

image

рис.4

Все прекрасно работает. Тем не менее, метод имеет, на мой взгляд, два недостатка.  Первый - он смотрит в масштабах всего сервера. Нельзя ограничить проверку на конкретную базу или приложение. Например, выше нам пришлось стопить службу отчетности, чтобы она не вносила свое влияние в результат эксперимента. Второе - метод не позволяет ничего сказать про то, в каком месте базы или кода встретилась пойманная несовместность.  Ставить select * from sys.dm_os_performance_counters where object_name like '%deprecated%' после каждой строчки кода нереально. В следующей серии мы посмотрим, как можно преодолеть эти недостатки.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 24.03.2010 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год.
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Business Basic (corporate)
Microsoft 365 Apps for business (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Вопросы и ответы по MS SQL Server
Работа в Windows и новости компании Microsoft
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100