SQL AzureインスタンスでホストされているOLTPデータベースがあります。データベースに影響を与えずに重い抽出とOLAPスタイルのクエリを実行できるように、データベースのコピーをクラウドからプルしたいと思います。ソースデータベース。
データベースのコピーをローカルSQL Serverインスタンスにプルするにはどうすればよいですか?
SQL Azure移行ウィザード を使用します。
SQL Azureの移行Wizard(SQLAzureMW)には、分析、スクリプトの生成、および(BCPを介した)データの移行のオプションがあります。
- SQL ServerからSQL Azure
- SQL AzureからSQL Server
- SQL AzureからSQL Azure
Red Gateには、適切な名前の SQL Azure Backup Tool があります。これは無料ですが、Red Gateはサポートを打ち切りました。
すべてのテーブルの内容をローカルファイルにエクスポートする bcp
スクリプトを作成します。
最初に、bcp
コマンドを出力してターゲットデータベースの各テーブルを宛先マシンのパスにエクスポートするクエリを記述します。
SELECT
'bcp '
+ SCHEMA_NAME(schema_id) + '.' + name
+ ' out '
+ ' D:\local_backup_directory\' + SCHEMA_NAME(schema_id) + '.' + name + '.txt'
+ ' -c '
+ ' -S servername.database.windows.net '
+ ' -d database_name '
+ ' -U username '
+ ' -P password'
FROM sys.tables;
コピー先のマシンからSQL Azureデータベースに対してbcp
を使用してこのクエリを実行し、結果をcmd
ファイルに保存します。そのcmd
ファイルを実行して、各テーブルをテキストファイルにエクスポートします。
C:\> REM ask bcp to save the results of the above query to a file
C:\> bcp "SELECT 'bcp ' + SCHEMA_NAME(schema_id) + '.' + name + ' out ' + ' D:\backup_directory\' + SCHEMA_NAME(schema_id) + '.' + name + '.txt' + ' -c ' + ' -S servername.database.windows.net ' + ' -d database_name ' + ' -U username ' + ' -P password' FROM sys.tables;" queryout output_path\bcp_script.cmd -c -S servername.database.windows.net -d database_name -U username -P password
C:\> REM execute the bcp commands saved to file
C:\> output_path\bcp_script.cmd
これは迅速でダーティなアプローチであり、大規模なデータベースや複雑なスキーマには適切ではありません。
このリストに新しいツールがあることに気づきました IderaのAzure SQLデータベースバックアップ です。それは無料で、彼らは通常良いツールを作るので、試してみる価値があります。
データベース(今回はスキーマのみ、データなし)をAzureにエクスポートする別の方法は、DACパッケージ(Management StudioまたはVisual Studio 2010から抽出された.dacpacファイル)を使用することです。これは、SQL 2008 R2 SP1 +からのみ機能します。
データ層アプリケーションの詳細については、こちらをご覧ください。
sSMSデータインポートウィザードを使用できます。これが良い ブログ投稿 それについての写真付きです。 重要なポイントは、ソースデータベースの.NETデータプロバイダーを選択することです。他の(そしてデフォルト-ネイティブの)プロバイダーで動作させるために、私は多くの問題を抱えていました。