前回の投稿で Azure AD Connect をインプレースアップグレードした後も、 SQL Server の Local DB バージョンが 2012 のままとなっているということをお伝えしましたが、今回は強制的に 2019 に切り替える方法を見てみたいと思います。
なお、この方法は Microsoft からのサポートがある方法ではありません。
おそらくそのうち機能更新された Azure AD Connect や対応手法が出てくるものと思われるので、本番環境ではそういった情報更新が行われるのを待ちましょう。
いろいろ調べてみたところ、 SQL Server 2012 は Azure AD Connect 内に内包されており、 Azure AD Connect サービスの開始時に自動的に DB が起動するようになっていました。
そのため、別で DB サービスを起動して動かすというような対応はできなさそうでした。
もちろん Azure AD Connect の Local DB を利用せずに外部 DB 接続に変更すればよいのですが、 DB 接続の変更方法が書かれた docs を見ると、アンインストール後にインストールしなおすように誘導しているため、若干コストの高い方法となっているので実施しにくいというのが現状なのではないかと思っています。
この 4 項目にアンインストールとの記述が。
というわけで早速その手法を行っていきましょう。
まずは Microsoft Azure AD Sync サービスを停止します。
このサービスを停止することで sqlservr のプロセスが停止します。
すると SQL Server 関連のプログラムが停止し、プログラムが可能うされているフォルダーへのアクセスが行える状況になります。
というわけで以下のフォルダーにはいり、フォルダー名を適当なものに変えてしまいましょう。
C:\Program Files\Microsoft SQL Server\110\LocalDB
今回は Binn というフォルダーを Binn1 に変更しました。
ここまで終えると事前準備の完了です。
次にコマンドプロンプトを管理者で開き、以下のコマンドを実行します。
mklink /j "C:\Program Files\Microsoft SQL Server\110\LocalDB\Binn" "C:\Program Files\Microsoft SQL Server\150\LocalDB\Binn"
このコマンドはジャンクションの作成といい、簡単にいうとショートカットを作る機能です。
このコマンドで SQL Server 2019 のプログラムを SQL Server 2012 の場所に配置した形となります。以下図の Binn が SQL Server 2019 のものに置き換わったように見えるわけです。
この状態で Microsoft Azure AD Sync サービスを起動しましょう。
これで Azure AD Connect が SQL Server 2019 の Local DB 上で動くようになりました。
実際に切り替わったことを確認してみましょう。
以下のフォルダーにある error.log を開くと最初の行に SQL Server 2019 という文字が見えますね。
C:\Windows\ServiceProfiles\ADSync\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\ADSync
最後のほうを見てみるとデータベースの upgrade が行われたことが分かります。
この error.log は過去 7 回の起動分ログが残るので、古いものを見てみましょう。
このように SQL Server 2012 になっています。
今回の方法は誰にでもお薦めできるものではありませんが、こんな方法もあるということで、見ていただければと思います。
早いところ公式な手順が出てくれるとよいですね。
音楽:雲の高さ