Azure SQL Database Bacpacローカルリストア


130

Azure管理コンソールの[エクスポート]オプションを使用して、Azure SQLデータベースのBACPACバックアップを作成しました。

これを自分のマシンにダウンロードしたので、これをローカルのSQL Serverインスタンスに復元する方法に少し行き詰まっています。DacImportExportCliツールを見つけましたが、ローカルリストアの例が見つかりませんでした。

また、誰かがこれを行う(スケジュールできるようにする)スクリプトを書いた場合は、すばらしいでしょう。


8
これはSQL Server 2012の問題かもしれませんが、SQL Server Management Studioでは、ローカルサーバーのデータベースフォルダーを右クリックし、[データ層アプリケーションのインポート]を選択すると、BACPACファイルを読み込んでAzureデータベースのコピーを作成するウィザードが起動します。最初にローカルにコピーしたくない場合は、ウィザードでBLOBストアに直接接続してBACPACファイルを取得することもできます。
dumbledad

これを理解したことはありますか?
2012

3
@dumbledadデータ層アプリケーションをインポートするのはSQL 2012 SSMSのことだと思います。2008R2にはDACPACをエクスポートする機能しかないようで、インポートオプションが表示されません。
jamiebarrow 2012

回答:


179

これは、SQL Server Management Studio 2012を介して簡単に実行できます。

  1. 右クリックし接続]> [データベース]ノードを選択し、「インポートデータ層アプリケーションを...
  2. 導入ステップで「次へ」を選択します。
  3. ここに画像の説明を入力してください
  4. バックアップを保持するストレージアカウントを参照または接続します。

2
これは完璧です。RedGateツールは不安定な場合があります。MSでサポートされているオプションが表示されてうれしいです。
gilly3 2013年

2
SQL Express 2012で動作しますか?次のエラーメッセージが表示されるためです。パッケージからスキーマモデルをロードできません。(Microsoft.SqlServer.Dac)------------------------------追加情報:内部エラー。内部ターゲットプラットフォームタイプSqlAzureDatabaseSchemaProviderは、スキーマファイルバージョン '2.5'をサポートしていません。(ファイル:C:\ Users \ xxxxx \ Downloads \ dbname-2013-10-10-20-2.bacpac)(Microsoft.Data.Tools.Schema.Sql)
Antoine Meltzheim

@ElTone Management Studioを使用して、bacpacをAzure StorageからローカルのSQL Server Express 2012データベースに直接復元しました。エラーは見られず、データはそこにあるようです。誰かがSQL Serverデータツールの新しいバージョンをインストールすると、それらを助けた(しかし、彼らは管理Studioに言及されていない)ことを言及social.msdn.microsoft.com/Forums/windowsazure/en-US/...
ユハPalomäki

@JuhaPalomäki正解:SSDTの最新バージョンをインストールすると問題が解決しました。すべてが今より良いです。
Antoine Meltzheim 2013年

4
Management Studioでインポートできるbacpacファイルのサイズには、いくつかの制限があるようです。あなたがのOutOfMemory例外をヒットした場合、コマンドラインツールSqlPackage.exeを使用する方法のノミの答えをチェック
ユハPalomäki

52

SQL Azureデータベースをエクスポートしてから、ローカルのSQL 2008 R2サーバーにインポートする必要がありました(Visual Studio 2010も使用していることに注意してください)。マイクロソフトは確かにこれを苦痛な仕事にするために彼らの道を行きました、しかし、私は以下をすることによってそれをすることができました:

  1. このリンクhttp://msdn.microsoft.com/en-us/jj650014にアクセスして、Visual Studio 2010用のSQL Serverデータツールをインストールします。

  2. これはローカルドライブにインストールされます。私の場合、ここにそれが置かれています:C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ DAC \ bin

  3. コマンドラインまたはPowershellを介してこれにアクセスします

  4. SqlPackage.exeを実行したい

  5. このリンクを開いて、SqlPackage.exeのすべてのパラメーターオプションのリストを確認します(http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx

  6. .bacpacファイルをローカルのSQL 2008 R2サーバーにインポートするために実行する必要のあるコマンドラインを次に示します。

    。\ SqlPackage.exe / a:Import /sf:C:\mydatabasefile.bacpac / tdn:NorthWind / tsn:BINGBONG

/tdnは、bacpacファイルを復元するデータベースの名前です。 /tsnSQLサーバーの名前です。

これらのパラメーターの説明はすべて、#5のリンクで確認できます。


SSMS 2012がインストールされている場合、これはさらに簡単に実行できます。上記の@Josiahで説明されているように、2008 R2サーバーでもウィザードを使用できます。
DanO 2014年

2
私はこのソリューションを探すのに非常に多くの時間を費やし、その間に管理スタジオ2014全体をダウンロードすることができました。
サントス2014年

ターゲットデータベースを完全に削除するまで、SqlPackageは「データベースの更新」のステップでハングしていました
michael_hook

10

クライアント側のツールを使用してBACPACを復元できます。ビデオはここにあります:

http://dacguy.wordpress.com/2011/09/09/importexport-services/

ツールはこちらから入手できます。

http://sqldacexamples.codeplex.com/documentation


このツールは、bacpacのローカルデータベースへのインポートをサポートすることになっています。たとえば、Windows Authを使用してbacpacをデータベースにインポートすると、「DacCli -S myserver -E -D nw_restored -F northwind.bacpac -I」のようになります。ただし、必要なアセンブリのcodeplexリストは古くなっており、どのリンクも機能しないため、ツールは実行されません(SQL 2012 CTPコンポーネントには前提条件があります)。
David Airapetyan

私は自分のマシンにすべてのコンポーネントをインストールしたので、DacCliでbacpacをインポートしようとしました-うまくいきました(以前のコメントのコマンドラインを参照してください)。100MBバックパックの場合、約20分かかりました。
David Airapetyan

7

私の祈りは答えられたようです。Redgateは本日、SQL Azureバックアップツールを無料でリリースしました-http ://www.red-gate.com/products/dba/sql-azure-backup/download


いくつかの問題:1. SQL Azure Backupのアクティブな開発は今のところ停止しています(このメモはツールの最新バージョンを実行すると表示されます)2. AzureからローカルSQLに直接バックアップする場合、それを通過しないようですbacpacですが、代わりに、独自のスキーマ/データコピーを実装しています。私の経験では、非常に遅いです。3.前のポイントに基づいて構築すると、メカニズムにバグがあります-ツールが一意のキーを検出できなかったため、複数のテーブルを転送できませんでした
David Airapetyan

2
この回答は更新する必要があります。更新しない場合、承認された回答ではなくなります。リンクされたツールは「クラウド」ソリューションになり、ローカルバックアップをサポートしていません。
ティモシーストライプル

2
バックアップツールは引き続きred-gate.com/products/dba/sql-azure-backup/Discontinued
Ben Foster

5

SSMS 2012を使用している場合は、オブジェクトエクスプローラーでサーバーの下の[データベース]フォルダーを右クリックし、[データ層アプリケーションのインポート...]を選択するだけです。

注意すべき点が1つあります。2013年3月26日(自分でこれを行う方法を見つける必要があったとき)に、Azureから.bacpacをエクスポートすると、.zipファイルとしてダウンロードされます。ない .bacpacファイル、およびインポートウィザードで[参照]ボタンによって開かれるファイルダイアログは、いずれか一方のみ* .bacpac表示またはますファイルフィルターで、.zipがサポートされていないことを意味します。ただし、フィルターをに変更した場合、ダウンロードした.zipを選択し、[次へ]をクリックすると、ウィザードは通常どおり続行されます。


2
これが正解です。SSMS 2016の無料のスタンドアロンバージョンをインストールできるようになり、これらのすべての機能が提供されます
アーロン

3

一連のbacpacファイルを一度に復元するスクリプトを 次に示します。

cd [FOLDERPATH]
$goodlist = dir
cd 'C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin'
foreach($i in $goodlist){ $name = $i.Name; $namer = $i.Name.Substring(0, $i.Name.length - 7); .\SqlPackage.exe /a:Import /sf:[FOLDERPATH]\$name /tdn:$namer /tsn:[SERVERNAME] }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.