Вилов несумісні після переходу на SQL Server 2008. Частина 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):

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

Поверніться в профайлер і подивіться результат.

рис.3

Як і у випадку Perfmon, все несумісні благополучно піймалися, однак тепер разом з лайкою можна спостерігати конкретний шматок коду, де вона проявилася і куди, відповідно, потрібно лізти, щоб її поправити.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*