以前、SQL Server の互換性レベル変更に伴う構文解析ツールを作成しました という投稿をしました。
この投稿の検証をした理由の一つとして、SQL Server の互換性レベル毎の構文評価が動作していないというものがありました。
この事象については、フィードバックをしており開発チームにも事象の共有ができていたのですが、 SSMS 22.10.0 で改善したようです。
本投稿時点では、リリースノート には記載されていないのですが、以前のアップグレード評価では検知されなかった互換性の問題が検知されるようになっています。
SSMS 22.10.0 のアップグレード評価の精度の向上
SSMS 22.9.2 までは、互換性レベルごとの構文解析の実行や、DMA で実行されていたルールによる評価が動作していない雰囲気がありました。
例としては次のようなストアドプロシージャになります。
CREATE PROCEDURE [dbo].[usp_TEST03] AS SELECT 'a' AS TRY_CONVERT GO
このストアドプロシージャは「TRY_CONVERT」という列の別名を使用しています。
TRY_CONVERT は互換性レベル 110 で 予約語 と指定されているため、上記のストアドプロシージャや互換性レベル 100 では動作するのですが、110 では動作しないクエリとなります。
SSMS 22.9.2 ではこのクエリは互換性レベルの変更による問題としては検知がされていませんでした。
DMA ではこのようなクエリの検知ができていたのですが、SSMS では検知ができないということをフィードバックしていたのですが、SSMS 22.10.0 でこの事象が改善したようで、最新バージョンの SSMS では、このクエリが検知できるようになっていました。
アップグレード評価の対象の SQL Server / Database は同一で、SSMS を 22.9.2 -> 22.10.0 に変更すると、次のように検知対象が変わっていることが確認できます。
最新の SSMS を使用することでアップグレード評価の精度が向上していましたので、アップグレード評価については最新の SSMS の利用をしたほうが良いかと思います。