web-dev-qa-db-ja.com

Visual Studioを使用してAzure SQLバックアップ(.bacpac)をLocalDBにインポートする方法

これはかなり主流のシナリオになると思いますが、エクスポートされたAzure SQLデータベース(.bacpac)をLocalDBVisual Studio 201にインポートする方法を見つけることができません。何か不足しているのか、Visual Studioに不足しているのですか?

(注:SQL Server管理スタジオがある場合はここに解決策がありますが、私はそれを持っていないので、可能であればインストールしないことをお勧めします。)

27
Borek Bernard

マシンにこのフォルダがある場合 C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin 次に、このコマンドを実行してbacpacファイルを復元できます。

.\SqlPackage.exe /Action:Import /SourceFile:"c:\temp\your.bacpac" /TargetConnectionString:"Data Source=(localdb)\v11.0;Initial Catalog=devdb; Integrated Security=true;"

そのフォルダーがない場合は、 Microsoftからツールをダウンロード する必要があります。

29
Simon W

私にとって正しいコマンドは:

.\SqlPackage.exe /Action:Import /SourceFile:"c:\temp\your.bacpac" /TargetConnectionString:"Data Source=(localdb)\mssqllocaldb;Initial Catalog=DBNAME;Integrated Security=true;"

そうしないと、エラーが発生します:_*** Error importing database:Could not import package. Unable to connect to master or target server 'DBNAME'. You must have a user with the same password in master or target server 'DBNAME'._

VS2015を使用して、anjdreasで指定された場所:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130

9
teocomi

これを複数回使用する場合は、sqlpackageを環境変数に追加して、任意のフォルダーからコマンドとしてsqlpackageを実行できます。

環境変数へのパスを追加する方法については こちら を参照してください。それほど難しくありません。

その後、どこからでもsqlpackageを実行できます。追加後にテストするには、任意のフォルダーからコマンドプロンプトまたはpowershellを開いてsqlpackageと入力すると、次のようなものが表示されます(変更を取得できるように、以前に開いていたすべてのプロンプトを最初に閉じることを忘れないでください)。

running <code>sqlpackage</code> from anywhere

次に、完全なスクリプト:

sqlpackage/Action:Import /SourceFile:"C:...\SOMEDBBACKUP.bacpac "/ TargetConnectionString:" Data Source =(localdb)\ mssqllocaldb; Initial Catalog = bac_give_dbimport_any_name_you_want; Integrated Security = true; "

ノート:

  1. 私のインストールでは、すべて小文字のsqlpackage.exe、それで私はすべて小文字を使用していますsqlpackage
  2. 現時点でのVStudio 2019でのパスは次のとおりですが、最終パスを試して自分のパス/最新バージョンを見つけることができます(「.../DAC/130」または140または150から選択できます)。

C:\ Program Files(x86)\ Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\150\sqlpackage.exe

  1. インポートされたデータベース名の場合、元のデータベース名と一致する必要はないため、「bac_give_dbimport_any_name_you_want」は任意の名前にすることができます。
1