1.Data Migration Assistant(DMA)
DMAは、データベースの互換性を検証するツールです。
アップグレードをしようとした時に最も気になる点は、SQL Serverをバージョンアップした時にどれぐらい影響があるかだと思います。アップグレード時に廃止される機能、非サポートの機能がシステムでどれぐらい使用されているを確認する為には多くの時間が必要です。
このツールを使用することで、アップグレードにより互換性に影響がある箇所を洗い出してくれます。
DMAのインストール
DMAのシステム要件やダウンロードサイトはこちらをご確認ください。
移行元データベースの互換性を確認するツールなので、互換性を確認するだけであれば移行先の環境は必要ありません。また、対応OSはWindows Server 2012以上なので、SQL Server 2008で使用している可能性が高いWindows Server 2008では動かず、自PCや別サーバーにDMAをインストールして、リモートで接続する必要があります。ちなみに、移行対象としてAzure SQL Databaseにも対応しているので、Azureへの移行を検討している方にも使えそうです。
DMAの使用
実際にDMAを使用してみます。今回使用するバージョンは、3.4になります。DMAを起動すると、以下の画面が立ち上がります。「+」ボタンをクリックして、プロジェクト情報を指定します。


- Project Type:Assessment/Migrationを指定
- Migrationを選択すると、データを移行することが可能。評価の場合Assessmentを選択
- Project name:任意のプロジェクト名
- Source server type:SQL Serverのみ
- Target server type:SQL Server/Azure SQL Database/SQL Server on Azure Virtual Machines
設定後、Createをクリックしてプロジェクトを作成します。
次に、レポートに出力したい評価内容を選択します。

- Select target version:移行対象のSQL Serverのバージョンを指定
- Select report type
- Compatibility Issues:互換性に問題がある機能の提示
- New features’ recommendation:推奨機能の提示
- Check feature parity:SQL Server 2017 on Linuxを指定した場合の互換性を提示
上記設定後、Nextをクリックします。
最後に評価対象のデータベースを指定します。接続するサーバーのサーバー名と認証タイプを指定し、次の画面で評価したいデータベースを選択します。



選択後、Start Assessmentをクリックすると、評価が開始されます。
レポート
出力されたレポートが以下になります。

アップグレードで影響がある箇所がCompatibility(互換性レベル)毎にレポートされています。上記だと、tpccというデータベースでUnqualified Join(s) detectedという仕様変更が発生する可能性があり、dbo.newordプロシージャとdbo.slevで使用していると指摘されています。ちなみにこの指摘は、テーブル結合の記載でINNER JOIN等を使用せずにWHERE句でa.col1 = b.col1のように記載していると稀に直積結合になる可能性がある為、INNER JOINの使用を推奨しています。
このように、問題箇所とその機能を使用しているオブジェクトをレポートで確認できるので、アップグレードによる互換性の問題箇所を簡単に特定することができます。ただし、レポートの対象はシステムの全てではなくSQL Serverのデータベース内にあるオブジェクトであり、アプリケーション側のクエリは当然ながら対象外ですので、この点はご注意いただければと思います。