1. ホーム
  2. sql-server

[解決済み】SQL Azureのデータベースをローカルの開発サーバーにコピーする方法は?

2022-04-29 01:59:23

質問

SQL Azureのデータベースを開発マシンにコピーする方法をご存知の方はいらっしゃいますか?開発用データベースをクラウドに置くためにお金を払うのはやめたいのですが、本番データを取得するためには最適な方法なのです。私は本番データベースを新しい開発データベースにコピーしていますが、同じデータベースをローカルに持ちたいと考えています。

何か提案はありますか?

解決方法は?

複数の方法があります。

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

の手動手順 メソッド#1 (SSISを使用)は以下の通りです。

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

SSISパッケージを作成し、いつでも再インポートできるように再実行することで、自動化することができます。ただし、SSISでインポートできるのはクリーンなDBのみで、一度インポートしたデータをローカルのDBに増分更新することはできません。

方法その2 (SSIDデータ+スキーマオブジェクト)は非常に簡単です。まず、上記の手順で、DB作成スクリプトを作成します(SSMSでデータベースを右クリックし、Generate Scripts -> Database Createを選択します)。そして、このスクリプトをローカルのデータベースで再生します。

方法その3 は、こちらのBlogで紹介しています。 http://dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/ . DBの内容をBACPACとしてAzure Blobストレージに転送する手順を紹介したビデオクリップがあります。その後、ローカルにファイルをコピーして、SQLインスタンスにインポートすることができます。BACPACをData-Tierアプリケーションにインポートする手順は、こちらで紹介しています。 http://msdn.microsoft.com/en-us/library/hh710052.aspx .