プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

SQL Server の互換性レベル変更のための検証

仕事で使ってる SQL Server があります。以前は、RDS の SQL Server 2014 を使っていたのですが、監査機能(のある機能)を使いたかったので、 SQL Server 2019 に移行しました。 RDS では、メジャーバージョンアップしても、互換性レベルをアップグレード前に合わせてくれるというのがあるので、互換性レベル 120 ( SQL Server 2014 相当) で使ってました。

いままでは、この形の運用で問題なかったのですが、ちょっと試してみたい機能(というより関数)が出てきました。が、自分で互換性を確認することを考えるとなかなか大変なので当初は躊躇してました。

ですが、ちょっと調べてみたら DMA(Data Migration Assistant)というツールがあり、これを使えば、SQL Server 間のアップグレード時の問題が簡単に確認できることが分かりました。

ということで、実際に試してみましたので、メモを残しておきます。

DMA のインストールと起動

DMA は、 Microsoft のサイトからダウンロードできます。早速、ダウンロードして、インストーラをダブルクリックすれば簡単んいインストールできます。インストールに成功したら、早速起動してみます。

無事起動できましたね。

アセスメントの実施

DMA にはアセスメントと移行の2つの機能があるようです。今回はアセスメントを使います。

まず『+』を押して、新しいプロジェクトを設定します。

今回は次のようにしました。

項目 設定内容
プロジェクトタイプ Assesment (デフォルト)
プロジェクト名 適当な名前(testにしました)
Assesment Type Database Engine (デフォルト)
Source Server Type AWS RDS for SQL Server
Target server type SQL Server

設定後 create ボタンを押すと、設定画面に移ります。

Select target version は SQL Server on Windows を選択します(デフォルトのまま)。

検査する内容を選択するのですが、 Compatibility Issue しか選べないので、そのままとして、nextを押します。

Assesment したい source server のアドレスとログイン情報を設定します。

このとき、 Trust server certificate にもチェックを入れときます。

Connect を押して、接続できればOKです。無事に接続すると、下記のような画面が表示されて、SQL Server のどのデータベースに接続するかを聞かれます。今回は、すべてのデータベースとしました。

ここまでの設定でよければ、addを押します。

もう一度、 source の確認画面が表示されるので、

問題がなければ、 Start Assesment を押してアセスメントを行います。

結果の確認

しばらく、下記のような画面が出てる状態で待ちます。

Assesment が終わると結果画面が表示されます。

おぉ、問題ないようです。Compatibility Level 毎に評価結果も出してくれるようです。今回の場合は Compatibility Level 150 (SQL Server 2019 相当)に上げても問題ないようですね。

まあ、そんなにややこしいことをやってる覚えもないので、妥当っちゃ妥当な結果なのですが、確認できるのは、精神衛生上いいですね。

最後に、念のため、 Export report で結果を保存しておきます。

まとめ

一応、機械的にですが、互換性レベルを上げても問題ないことが確認でした。あとは、こちらの記事などを参考に、実際に互換性レベルを変更します。

にしても、これで検証できるのは楽ですね。また、使ってみよう。

おまけ

以前、 Access を SQL Server に移行する際に SSMA ( SQL Server Migration Assistant ) というのを使いました(こちらの記事参照)。今回の DMA と何が違うんだろうか?と思ったので、調べてみると

  • SSMA : 異なるデータベースを SQL Server に移行する際の手助けをしてくれるツール
  • DMA : SQL Server のアップグレード時の互換性の手助けしてくれるツール

ということでした(詳しくはこちらの記事などを参照)。

なるほどね。にしても、名前が紛らわしいな。