web-dev-qa-db-ja.com

SQL Azureデータベースをローカル開発サーバーにコピーするにはどうすればよいですか?

SQL Azureデータベースを開発マシンにコピーする方法を知っている人はいますか?クラウドに開発データベースを設置するための支払いをやめたいのですが、実稼働データを取得する最良の方法です。実稼働データベースを新しい開発データベースにコピーしますが、同じデータベースをローカルにしたいです。

助言がありますか?

148
BZink

これを行うには複数の方法があります。

  1. SSISの使用(SQL Server Integration Services)。テーブルのdataのみをインポートします。列のプロパティ、制約、キー、インデックス、ストアドプロシージャ、トリガー、セキュリティ設定、ユーザー、ログオンなどは転送されません。ただし、これは非常に単純なプロセスであり、SQL Server Management Studioのウィザードを使用するだけで実行できます。
  2. SSISとDB作成スクリプトの組み合わせを使用します。これにより、SSISによって転送されないデータとすべての欠落メタデータが取得されます。これも非常に簡単です。最初にSSISを使用してデータを転送し(以下の手順を参照)、SQL AzureデータベースからDB Createスクリプトを作成し、ローカルデータベースで再生します。
  3. 最後に、SQL AzureでImport/Exportサービスを使用できます。これにより、データが(スキーマオブジェクトとともに)BACPACとしてAzure Blob Storageに転送されます。 Azure Storageアカウントが必要になり、Azure Webポータルでこれを行います。エクスポートするデータベースを選択するときに、Azure Webポータルの[エクスポート]ボタンを押すのと同じくらい簡単です。欠点は、それが手動の手順にすぎないことです。ツールまたはスクリプトを使用してこれを自動化する方法がわかりません。少なくとも、Webページをクリックする必要がある最初の部分です。

method#1(SSISを使用)の手動手順は次のとおりです。

  • Sql Server Management Studio(SSMS)で、ローカルのSQLインスタンスに新しい空のデータベースを作成します。
  • コンテキストメニューから[データのインポート]を選択します(データベースを右クリック->タスク->データのインポート...)
  • ソースの接続パラメーターを入力します(SQL Azure)。プロバイダーとして「.Net Framework Data Provider for SqlServer」を選択します。
  • 宛先として既存の空のローカルデータベースを選択します。
  • ウィザードに従ってください-コピーするテーブルデータを選択できます。不要なテーブルはスキップすることもできます。例えば。データベースにアプリケーションログを保持する場合、おそらくバックアップでそれを必要としません。

SSISパッケージを作成し、データを再インポートしたいときにいつでも再実行することで、自動化できます。 SSISを使用してクリーンなDBにしかインポートできないことに注意してください。一度行ったローカルデータベースの増分更新はできません。

方法#2(SSIDデータとスキーマオブジェクト)は非常に簡単です。最初に上記の手順を実行してから、DB作成スクリプトを作成します(SSMSでデータベースを右クリックし、[スクリプトの生成]-> [データベースの作成]を選択します)。次に、ローカルデータベースでこのスクリプトを再生します。

方法#3は、ブログに記載されています: http://dacguy.wordpress.com/2012/01/24/sql-Azure-importexport-service- has-hit-production / 。 DBコンテンツをBACPACとしてAzure Blobストレージに転送するプロセスを含むビデオクリップがあります。その後、ファイルをローカルにコピーして、SQLインスタンスにインポートできます。 BACPACをデータ層アプリケーションにインポートするプロセスについては、 http://msdn.Microsoft.com/en-us/library/hh710052.aspx で説明しています。

123
seva titov

dumbledad's answer の簡易バージョンを追加したかったのは、正しいバージョンだからです。

  1. Azure SQL DatabaseをBLOBストレージのBACPACファイルにエクスポートします。
  2. SQL Management Studio内で、データベースを右クリックし、[データ層アプリケーションのインポート]をクリックします。
  3. Azure BLOBストレージのBACPACファイルにアクセスするための情報を入力するよう求められます。
  4. 次に数回ヒットして...完了!
30
Josh Mouch

Azureデータベースデータをローカルデータベースにコピーする:これで、SQL Server Management Studioを使用して、次のようにこれを行うことができます。

  • SQL Azureデータベースに接続します。
  • オブジェクトエクスプローラーでデータベースを右クリックします。
  • [タスク]/[データベースをSQL Azureにデプロイ]オプションを選択します。
  • 「配置設定」という手順で、ローカルのSQL Serverに接続し、新しいデータベースを作成します。

enter image description here

「次へ」/「次へ」/「終了」

26
Atom

SQL Server 2016 Management Studioでは、ローカルコンピューターにAzureデータベースを取得するプロセスが合理化されました。

インポートするデータベースを右クリックし、タスク>データ層アプリケーションのエクスポートをクリックして、データベースをローカルの.dacpacファイルにエクスポートします。

ローカルターゲットSQLサーバーインスタンスで、右クリックデータベース>データ層アプリケーションのインポートを実行できます。ローカルになったら、データベースのバックアップや復元などを実行できます。

22
Adam Skinner

今はもっと簡単だと思います。

  1. SQL Management Studioを起動します
  2. 「データベース」を右クリックし、「データ層アプリケーションのインポート...」を選択します
  3. ウィザードは、Azureアカウントに接続し、BACPACファイルを作成し、データベースを作成するプロセスを案内します。

さらに、SQLバックアップとFTP( https://sqlbackupandftp.com/ )を使用して、安全なFTPサーバーへの毎日のバックアップを行います。そこから最新のBACPACファイルを取得し、同じダイアログにインポートします。これにより、ローカルデータベースの作成がより速く簡単になります。

20
ThisGuy

Windows Azure管理ポータルで SQL Azure Data Sync も確認できます。 SQL AzureとSQL Serverの間のスキーマとデータを含むデータベース全体を取得および復元できます。

8
Voclare

とても簡単です。これは私にとって... Azure SQLデータベースをローカルマシンにダウンさせるという点で...:

  1. SQL Management Studioを開き、Azure SQL Serverに接続します。
  2. ローカルマシンにアクセスするデータベースを選択し、右クリックして[スクリプトの生成]を選択します。プロンプトに従います...

ただし、データだけでなくスクリプトも必要な場合は、生成を開始する前に詳細オプションを確認してください...「スクリプトするデータの種類」までスクロールダウンし、「スキーマとデータ」...またはあなたに適したもの。

これにより、ローカルマシンで実行できるNice SQLスクリプトファイルが提供され、データベースが作成され、すべてのデータが入力されます。

私の場合、FKやその他の制約がないことを忘れないでください...また、大量のデータではありませんでした。

一般的なバックアップメカニズムとしてこれはお勧めしません...

5

msdeploy.exeを使用

警告:msdeploy.exeは、宛先データベースを単独で作成できないため、最初に手動で作成する必要があります。

  1. データベースのプロパティページで接続文字列をコピーします。正しいパスワードが含まれるように調整してください。 database properties page
  2. 宛先DBの接続文字列を取得します。
  3. 次のようにmsdeploy.exeを実行します。

    "c:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -dest:dbDacFx="destination_DB_connection_string",dropDestinationDatabase=true -source:dbDacFx="Azure_DB_connection_string",includeData=true -verbose
    

SqlPackage.exeを使用

  1. Azure DBをbacpacパッケージにエクスポートします。

    "c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /a:Export /ssn:"Azure_db_server" /sdn:"Azure_db_name" /su:"user_name" /sp:"password" /tf:"file.bacpac"
    
  2. パッケージをローカルDBにインポートします。

    "c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /a:Import /SourceFile:"file.bacpac" /TargetServerName:".\SQLEXPRESS" /TargetDatabaseName:CopyOfAzureDb
    
3
Gebb

これを試してください: http://mooneyblog.mmdbsolutions.com/index.php/2011/01/11/simple-database-backups-with-sql-Azure/

他の選択肢は SQL Azure Data Sync です。

数日前に出会ったもう1つのブログ記事がありますが、今は見つかりませんでした。見つけたらすぐにこの投稿を更新します。

3
Gaurav Mantri

ツール「SQL Database Migration Wizard」で試すことができます。このツールは、Azure SQLからデータをインポートおよびエクスポートするオプションを提供します。

詳細はこちらをご覧ください。

https://sqlazuremw.codeplex.com/

エラー「読み取り専用列「id」への挿入の失敗」が発生したため、SSISインポート/エクスポートを機能させることができませんでした。また、 http://sqlazuremw.codeplex.com/ が機能せず、上記のSQL Azure Data Syncへのリンクが機能しませんでした。

しかし、BACPACファイルに関する優れたブログ投稿を見つけました: http://dacguy.wordpress.com/2012/01/24/sql-Azure-importexport-service-has-hit-production/

投稿内のビデオ では、ブログ投稿の作成者は6つのステップを実行します。

  1. Azure管理ポータルでストレージアカウントを作成または移動します。 Blob URLとストレージアカウントのプライマリアクセスキーが必要になります。

  2. ブログの投稿では、bacpacファイルの新しいコンテナーを作成することを推奨しており、そのために Azure Storage Explorer を使用することを提案しています。 (注:Azureストレージエクスプローラーに追加するには、ストレージアカウントのBlob URLとプライマリアクセスキーが必要です。)

  3. Azure管理ポータルで、エクスポートするデータベースを選択し、リボンの[インポートとエクスポート]セクションで[エクスポート]をクリックします。

  4. 結果のダイアログには、データベースのユーザー名とパスワード、blob URL、およびアクセスキーが必要です。コンテナをblob URLに含め、ファイル名を含めることを忘れないでください(例 https://testazurestorage.blob.core.windows.net/dbbackups/mytable.bacpac )。

  5. [完了]をクリックすると、データベースがBACPACファイルにエクスポートされます。これには時間がかかる場合があります。 Azure Storage Explorerをチェックインすると、すぐにゼロバイトファイルが表示される場合があります。これは、ブロブストアへの書き込みアクセス権があることを確認するインポート/エクスポートサービスです。

  6. それが完了したら、Azure Storage Explorerを使用してBACPACファイルをダウンロードし、SQL Server Management Studioでローカルサーバーのデータベースフォルダーを右クリックして、データ層アプリケーションのインポートを選択し、BACPACファイルを読み込むウィザードを開始しますAzureデータベースのコピーを作成します。最初にローカルにコピーしたくない場合は、ウィザードはblob-storeに直接接続してBACPACファイルを取得することもできます。

最後の手順は、SQL Server Management StudioのSQL Server 2012エディション(実行中のバージョン)でのみ使用できます。このマシンにはチェックする以前のものはありません。ブログの投稿では、著者は http://sqldacexamples.codeplex.com/releases で入手できると思われるインポートにコマンドラインツールDacImportExportCli.exeを使用しています

2
dumbledad

受け入れられた回答は古くなっています。より良い答えが見つかりました:データ層アプリケーションのインポートを使用

詳細については、この記事を参照してください。 Azure SQLデータベースのローカルサーバーへの復元

2
Weimin Ye

「エラー「読み取り専用列「id」への挿入の失敗」が発生したため、SSISインポート/エクスポートを動作させることができませんでした。これは、マッピング画面で指定することで回避できます。 Identity要素の挿入を許可します。

その後、SQLインポート/エクスポートウィザードを使用してAzureからローカルデータベースにコピーすることですべてが正常に機能しました。

SQL Server 2008 R2に付属のSQL Import/Export Wizard(正常に機能した)、およびローカルデータベースを作成するVisual Studio 2012 Expressのみがありました。

2
rsh

Optillectをダウンロード SQL Azure Backup -15日間の試用版があるため、データベースを移動するだけで十分です:)

1
Optillect Team

私は常に、最も簡単な方法の1つであるインポート/エクスポート機能を使用しています。

ステップ1:

次のようにAzureインスタンスからバックアップを取得し、データベースを選択→右クリック→タスク→データ層アプリケーションをエクスポート。

ステップ2:バックアップファイルに特定の名前を付けて、目的の場所に保存します

ステップ3:これで、SQLインスタンスからローカルにデータベースのバックアップを取得できました。ローカルに復元しましょう。バックアップしたデータベースをCドライブにコピーします。管理者権限でPowerShellを開き、Cドライブに移動します

ステップ4:PowerShellスクリプトをダウンロードして、マスターを削除します keyRemoveMasterKey.ps1 この場合、同じドライブにスクリプトがありますそのC.

ステップ5:次のようにスクリプトを実行します。\ RemoveMasterKey.ps1 -bacpacPath "C:\ identity.bacpac"

これで、ローカル環境のMSSQL 2017で復元できるようになりました。

ステップ6:ローカルサーバーに接続し、データベース→Import-Data-Tier-Applicationをクリックします

ステップ7:復元するデータベースの名前を指定します。

これですべてが緑色で表示されます!

図で私のブログを読んでください。

1

新しいAzureモバイルサービスを使用して、SQL AzureからAzure Storageでホストされる.bacpacファイルへの夜間バックアップエクスポートを実行できます。このソリューションは100%クラウドであり、サードパーティのツールを必要とせず、ローカルにホストされたSQL Serverインスタンスを必要とせずにダウンロード/コピー/バックアップを行います。

約8つの異なる手順がありますが、すべて簡単です: http://geekswithblogs.net/BenBarreth/archive/2013/04/15/how-to-create-a-nightly-backup-of-your -sql-Azure.aspx

1
Ben Barreth

SQL Azureのインポート/エクスポートサービスを使用して、.bacpacファイルを作成します。

次に、別のStack Overflowの記事でこのメソッドを見てください。

Azure SQL Database Bacpac Local Restore

0
Jeff Bailey

私にとってのトリックは、空のDBでPK/FKs/constraintsの複製を開始し、データのインポート中に一時的に制約を無効にすることでした( https://stackoverflow.com/a/16141 を参照)。

より正確に:

  1. 空のターゲットDBを手動で作成します。
  2. [ソースDB]> [タスク]> [スクリプトの生成]を右クリックします。
  3. 空のターゲットDBでスクリプトファイルを実行します(DBには正しいPK/FK /制約がありますが、データはありません)。
  4. すべての制約を無効にします。
  5. データのインポート(ターゲットDB>タスク>データのインポートを右クリック);
  6. 制約を再度有効にします。

お役に立てれば!

0

Azure SQL Syncを使用するDBのBacpacのインポートに問題がある場合、Sandrino Di Mattiaは 偉大なシンプルなアプリケーション を開発しました=これを解決します。

  1. DBのBacpacをエクスポートします
  2. Dowload Di Mattiaの バイナリ
  3. このコンソールアプリで、ダウンロードしたBacpacを修復します
  4. ラウチSSMS
  5. 「データベース」を右クリックし、「データ層アプリケーションのインポート」を選択します
  6. 修復されたBacpacを選択します。
0
Géza

誰もがデータベースをローカルにバックアップするための無料で効果的なオプションが必要な場合(そして手動で行うことを気にしない)、最新バージョンのMicrosoft Visual Studio 2015 Community Edition(無料)またはProfessional/Premium/Ultimateに組み込まれたスキーマおよびデータ比較機能を使用します版。それは魅力のように機能します!

AzureでBizParkアカウントを持っていますが、支払いをせずにデータベースを直接バックアップする方法はありません。 VS Worksでこのオプションを見つけました。

答えは https://stackoverflow.com/a/685073/6796187

0
Crennotech

これで、SQL Server Management Studioを使用してこれを行うことができます。

  • SQL Azureデータベースに接続します。
  • オブジェクトエクスプローラーでデータベースを右クリックします。
  • [タスク]/[データベースをSQL Azureにデプロイ]オプションを選択します。
  • 「展開設定」という名前の手順で、ローカルデータベース接続を選択します。
  • 「次へ」/「次へ」/「終了」...
0
ferhrosa

こんにちはSQLAzure DBの移行と管理にSQLAzureMWツールを使用しています。非常に便利なもの。これはcodeplexからダウンロードされましたが、現在は利用できず、codeplexはシャットダウンされます。同じアプリケーションツールがGttHubで利用可能になりました。以下のリンクは、このツールの使用方法と、ダウンロード可能なアプリケーションの説明です。

https://github.com/twright-msft/Azure-content/blob/master/articles/sql-database/sql-database-migration-wizard.md

0
Raja Subbiah

SQL Server Management Studioで

インポートするデータベースを右クリックし、[タスク]> [データ層アプリケーションのエクスポート]をクリックして、データベースをローカルの.dacpacファイルにエクスポートします。

ローカルターゲットSQLサーバーインスタンスで、[データベース]> [データ層アプリケーションのインポート]を右クリックし、ローカルになったら、データベースのバックアップや復元などを実行できます。

0
Ali Sufyan