こんばんは、ウチイダです。

最近、Azureクラウドの案件に携わっています。

クライアントから報告されたバグの事象を再現するために、データベースをローカルに取り込むのに苦労したので、手順をまとめておきます。

Visual Studioのインストールが必要です。

Azure SQLデータベースをエクスポートする

まずはデータベースをエクスポートします。

直接ダウンロードはできず、いったんAzure ストレージに保存する仕様です。

ストレージがない場合は作成する必要があります。

エクスポートが完了したら、指定したストレージからbacpacファイルをダウンロードします。

インポート時にこのファイルのパスを利用するので、フルパスで控えておいてください。

ローカルSQLサーバの設定を変更する

Azure のSQLをエクスポートすると、bacpacという種類のファイルが出力されます。

SQLクエリのダンプファイルができるわけではなく、そのままではローカルに取り込みできません。

まず、bacpacファイルをインポートできるように設定を変更します。

Visual Studio などMSSQL サーバに接続できるソフトウェアから、以下のクエリを実行します。

sp_configure 'contained database authentication', 1;
GO
RECONFIGURE;
GO

SqlPackage.exeでインポート処理を行う

bacpac ファイルをインポートできる機能を持ったプログラム SqlPaclage.exe が、Visual Studioに同梱されています。

Visual Studioをインストールしたくない方は、以下のページからSqlPackageだけインストールできます。

https://docs.microsoft.com/ja-jp/sql/tools/sqlpackage/sqlpackage-download?view=sql-server-ver15

Visual Studioをデフォルトの設定でインストールした場合、以下のフォルダにSqlPackage.exeが入っています。

Program Files Microsoft Visual Studio 2022 Community Common7 IDE Extensions Microsoft SQLDB DAC

PowerShellやcmdでこのフォルダを開いて、以下のコマンドを実行します。

> .\SqlPackage.exe /a:Import /sf:"*** bacpacファイルのパス ***" /tcs:"Server=(localdb)\\MSSQLLocalDB;Database=データベース名; Integrated Security=true;"
サーバー '(LocalDB)\MSSQLLocalDB' のデータベース '(入力したデータベース名)' にインポートしています。
配置計画を作成しています
配置の初期化中
配置計画を検証しています
# ... 中略
データベースのインポートが完了しました。
経過時間 0:00:16.29

これで完了です。

覚えてしまえば大した手間ではないですが、ひと手間かかりますね。

以上です。あなたのお役に立てれば幸いです。