LoginSignup
0
0

More than 5 years have passed since last update.

bacpacファイルをsqlpackageを用いてAzure SQL Databaseへインポート

Last updated at Posted at 2018-07-11

tl;dr

ここのことをやるだけです。

注意点

  • DB上にユーザが存在する場合、同様に作成されます。が、 Azure SQL Server作成時のユーザと同名のユーザにすると失敗します
  • sqlpackageを用いてリモートへ取り込む方法となるため、IP制限あたりに注意してください。
  • 既に存在するAzure SQL Databaseに対しての操作は行えません。同名のDB名で作成したい場合は、既存のDBを削除する必要があります

手順

  1. bacpacファイルを用意する(手順無し)
    • 注意点にあるユーザ被りに注意。
  2. 既存のDBが存在する場合、削除する
  3. sqlpackageコマンドでimportを実行
    • 実行時に生成するDBのプランに注意する

sqlpackageコマンドは前に書いた以下を元にして打ちます。

ここを参考に、Azure上に作成するDBプランも指定していきます。

例: StandardのS0(DTU=10)プラン、クォータ250GBで作成する場合。

"C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin\sqlpackage" ^
  /Action:Import ^
  /TargetServerName:%DB_HOST% ^
  /TargetDatabaseName:%DB_NAME% ^
  /TargetUser:%DB_USER% ^
  /TargetPassword:%DB_PASSWORD% ^
  /TargetEncryptConnection:True ^
  /SourceFile:backup.bacpac ^
  /p:DatabaseEdition=Standard /p:DatabaseServiceObjective=S0 /p:DatabaseMaximumSize=250

トラブルシューティング

「マスター サーバーとターゲット サーバー '(DB_NAME)' のいずれにも接続できません。マスター サーバーかターゲット サーバー '(DB_NAME)' に同じパスワードのユーザーが必要です。」というエラーメッセージが出る

全文

*** データベース インポート エラー: パッケージをインポートできませんでした。
マスター サーバーとターゲット サーバー '(DB_NAME)' のいずれにも接続できません。マスター サーバーかターゲット サーバー '(DB_NAME)' に同じパスワードのユーザーが必要です。

原因の一つとして、IP制限に引っかかっていると同名の文言が表示されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0