web-dev-qa-db-ja.com

オンプレミスのSQL ServerデータベースをAzure SQL Databaseに移行する

オンプレミスサーバー(Win2008R2)からAzure PaaSへのサーバーの移行を進めています。

データベースを移動するために、 Microsoft Data Migration Assistant(DMA) ツールを使用しました。これはうまく機能し、SQL Server Management Studioを介して移行されたAzure DBに接続できます。

考慮:

  • 移行されたAzureデータベース(テーブル、SP、インデックス)にかなりの変更を加えて、Azureのアプリを操作
  • DMAを介してオンプレミスサーバーからAzureの1つのDBに複数のDBを結合してコストを節約する
  • 1つのオンプレミスデータベースは、移行プロセス中に挿入および更新操作(複数のテーブル)によって継続的に変更されます
  • Azureでホスティングを完全に切り替えるときは、すべてのデータが最新であることを確認する必要があります。これはAMの非常に早い時期に行われ、その間、オンプレミスIIS WebサイトはDB操作が行われないように停止され、不足しているデータを移行するための短いウィンドウが表示されます

質問:上記を考慮して、データを移行するための最善かつ最速の方法(すべてまたは欠落/更新)は何ですか?

これは以下の手順に従って達成できますか?

  1. 新しい空のAzure SQLデータベースを作成します(後で5つのオンプレミスデータベースのすべてのテーブルを保持するため)
  2. Microsoft Data Migration Assistant(DMA) を介して、挿入/更新操作によって継続的に変更されているオンプレミスデータベースのスキーマのみを移行します
  3. SQL Data Sync Agent を使用して、オンプレミスとAzureデータベース間の自動データ同期を設定します(たとえば30分ごと)
  4. データを同期して実行した後、 Microsoft Data Migration Assistant(DMA) -残りのオンプレミスデータベースのスキーマとデータを移行します(移行プロセス中にデータは変更されません)。以前は単一のAzureデータベースに移行されます。作成して同期に使用

編集:

Azure portalでデータ同期を有効にした後、以下のログに記録されたエラーが原因で同期が失敗しました:

  1. メンバーデータベース:MyAzureDb->トゥームストーンのクリーンアップは、「SqlExceptionエラーコード:-2146232060-SqlError番号:18456、メッセージ:ログインに失敗しました。
  2. メンバーデータベース:MyAzureDb->データベースプロビジョニングが例外「SqlExceptionエラーコード:-2146232060-SqlError番号:18456、メッセージ:ログインに失敗しました。

上記の1と2を修正するには:ALTER ROLE DataSync_executor ADD MEMBER [myUser];
しかし得たCannot add the principal 'myUser', because it does not exist or you do not have permission.

  1. Member Database:MyOnPremDb:->データベースプロビジョニングが次の例外で失敗しました: "SqlExceptionエラーコード:-2146232060-SqlError番号:325、メッセージ: 'MERGE'付近の構文が正しくありません。現在のデータベースの互換性レベルを高く設定する必要がある場合がありますこの機能を有効にする値です。ALTERDATABASEのSET COMPATIBILITY_LEVELオプションのヘルプを参照してください。SqlError番号:156、メッセージ:キーワード「AS」の近くに構文が正しくありません。

オンプレミスデータベースの現在の互換性レベルは80です。100に設定すると、本番データベース/アプリケーションにどのような影響があるかは不明です。

2
alex

まず、オンプレミスデータベースのスキーマのみをAzure SQLデータベースに移行し、次に Azure SQL Data Sync を使用してデータをAzureに移行し、Azure SQLデータベースで最新の状態に保つことをお勧めします。

Azure SQLデータベース側で空のスキーマから始めることをお勧めします。SQLデータ同期がオンプレミスでデータを検出すると、Azureは両方のデータベースの比較を開始し、多くのリソースを消費します。

最初の同期時 SQLデータ同期 は、Azure側に空のスキーマがある場合でも、オンプレミスデータベースサーバーで多くのリソースを消費する可能性があります。そのため、 SQLサーバーリソースガバナー オンプレミスのSQL Serverのデータ同期セッションで使用されるCPUを制限することで、データベースユーザーに影響を与える可能性のある大きなパフォーマンスへの影響を回避します。

準備ができたら、ユーザーを(SQL Data Syncが双方向モードの場合は段階的に、または段階的に)Azureに切り替えることができます。ユーザーが移行されたら、SQLデータベース同期構成からメンバーデータベース(オンプレミスデータベース)を削除して、SQLデータ同期操作を停止できます。

3
Alberto Morillo