SQL VM の移行用環境を準備する (プレビュー) - Azure Arc での SQL Server の移行

適用対象:SQL Server

この記事では、Azure ポータル内で Azure Arc により有効化された SQL Server インスタンスを Azure VM 上の SQL Server へ移行するための環境準備に役立ちます。

  • Azure ポータルを使用して Azure 仮想マシンの SQL Server に移行することは、現在、プレビュー段階にあります。
  • 移行エクスペリエンスに関するフィードバックを 製品グループに直接提供できます。

前提条件

Azure ポータルを使用してAzure VM 上のSQL ServerにSQL Server データベースを移行するには、次の前提条件が必要です。

  • アクティブなAzure サブスクリプション。 アカウントがない場合は、無料アカウントを作成してください。
  • Azure Arcによって有効化されたSQL Serverのインスタンスで、SQL Server用Azure拡張機能の最新バージョンを備えています。 拡張機能をアップグレードするには、「拡張機能 のアップグレード」を参照してください。
  • Azure VM で既存のSQL Serverを使用するか、移行プロセス中にターゲット SQL Server VM をプロビジョニングすることもできます。 既存の SQL Server VM を使用する場合は、 SQL IaaS Agent 拡張機能に登録する必要があります。

サポートされているSQL Serverバージョン

SQL Server VM の移行は、Windows と Linux 上のすべてのエディションのSQL Serverで動作します。

次の表に、移行でサポートされている最小SQL Serverバージョンを示します。

SQL Server バージョン 最低限必要なサービス更新プログラム
SQL Server 2025 (17.x) SQL Server 2025 RTM (17.0.1000.7)
SQL Server 2022 (16.x) SQL Server 2022 RTM (16.0.1000.6)
SQL Server 2019 (15.x) SQL Server 2019 RTM (15.0.2000.5)
SQL Server 2017 (14.x) SQL Server 2017 RTM (14.0.1000.169)
SQL Server 2016 (13.x) SQL Server 2016 RTM (13.0.1400.361)
SQL Server 2014 (12.x) SQL Server 2014 RTM (12.0.2000.8)
SQL Server 2012 (11.x) SQL Server 2012 RTM (11.0.2100.60)

アクセス許可

このセクションでは、Azure ポータルを使用して、SQL Server データベースを Azure VM 上のSQL Serverに移行するために必要なアクセス許可について説明します。

ソース SQL Server インスタンスでは、次のアクセス許可が必要です。

  • 最小限の特権を有効にした場合、データベース移行プロセス中に sysadmin などの必要なアクセス許可が必要に応じて付与されます。
  • 最小限の特権を使用できない場合は、ソース SQL Server インスタンスに対する sysadmin アクセス許可が必要です。

移行を実行するには、ターゲット Azure VM で Virtual Machine Contributor ロールが必要です。

ストレージ アカウントを作成する

SQL Server インスタンスと Azure VM 上のSQL Serverの間のバックアップ ファイルの中間ストレージとして、Azure Blob Storage アカウントを使用します。 ストレージ アカウントは、Azure VM 上のお使いの SQL Server と同じ Azure サブスクリプションおよびリージョンに存在する必要があります。

新しいストレージ アカウントと、ストレージ アカウント内の BLOB コンテナーを作成するには:

  1. ストレージ アカウントを作成します
    1. Azure ポータルで Storage アカウントを検索し、Create を選択します。
    2. [ 基本 ] タブで、サブスクリプションとリソース グループを選択します。 リージョンは、AZURE VM ターゲット上のSQL Serverと同じである必要があります。
    3. 優先ストレージの種類は空白のままにします。
    4. 残りのタブには既定の設定を使用し、[ 確認と作成] を選択します。
    5. 検証に合格したら、[ 作成] を選択します。
  2. ストレージ アカウント内に BLOB コンテナーを作成します
    1. Azure ポータルで新しいストレージ アカウントに移動します。
    2. [データ ストレージ] で、[コンテナー] を選択します。
    3. [コンテナーの追加] を使用して、[新しいコンテナー] ウィンドウを開きます。
    4. コンテナーの名前を入力し、オプションを既定値のままにして、[ 作成 ] を選択してコンテナーを作成します。
  3. (省略可能)Azure Storageがファイアウォールの内側にある場合、SQL Server VM がプロビジョニングされた後、Azure Blob Storage には 追加構成が必要です。 VM という名前のサブネットの委任を構成します。

Azure Blob Storageにアクセス許可を付与する

Azure Arc での VM 移行SQL Serverは、マネージド ID を使用してAzure Blob Storageに対する認証を行います。

次のアクセス許可を付与する必要があります。

ストレージ アカウントへのアクセス権をユーザーに付与する

移行プロセス中にデータベース バックアップにアクセスするには、Azure ポータルにサインインし、バックアップを含むストレージ アカウントの Storage BLOB データ 閲覧者 ロールへの移行を実行するユーザーを割り当てます。

ロールを割り当てるには、次の手順に従います。

  1. Azure ポータルで、ストレージ アカウントを含むリソース グループに移動します。

  2. リソース メニューから [アクセス制御 (IAM)] を選択します。

  3. [+ 追加] を使用して [ロールの割り当ての追加] を選択し、[ロールの割り当ての追加] ウィンドウを開きます。

  4. Storage Blob Data Reader ロールを検索して選択します。 次に、次へ を選択します。

    Azure portal のストレージ アカウントの IAM ページでストレージ BLOB データ閲覧者ロールを見つけるスクリーンショット。

  5. [+ メンバーの選択] を使用して [メンバーの選択] ウィンドウを開き、移行を実行しているユーザーのユーザー アカウントを検索します。 複数のユーザーがデータを移行する場合は、それらのすべてのユーザーにこのアクセス権を付与します。 ユーザー アカウントを選択し、[ 選択 ] を使用して選択内容を保存します。 ユーザー、グループ、またはサービス プリンシパルへのアクセスを割り当てるオプションをオンにします。

  6. [ 確認と割り当て] を選択して [ 確認と割り当て ] タブに移動し、[ 確認と割り当て ] をもう一度選択してロールの割り当てを完了します。

リソース グループへのアクセス権をユーザーに付与する

移行プロセス中にデータベース バックアップにアクセスするには、Azure ポータルにサインインして移行を実行するユーザーに、ストレージ アカウントを含むリソース グループの Reader ロールを割り当てる必要があります。

ロールを割り当てるには、次の手順に従います。

  1. Azure ポータルで、ストレージ アカウントを含むリソース グループに移動します。

  2. リソース メニューから [アクセス制御 (IAM)] を選択します。

  3. [+ 追加] を使用して [ロールの割り当ての追加] を選択し、[ロールの割り当ての追加] ウィンドウを開きます。

  4. 閲覧者ロールを検索して選択します。 次に、次へ を選択します。

    Azure ポータルでリソース グループの IAM ページでリーダー ロールを見つけるスクリーンショット。

  5. [+ メンバーの選択] を使用して [メンバーの選択] ウィンドウを開き、移行を実行しているユーザーのユーザー アカウントを検索します。 複数のユーザーがデータを移行する場合は、それらのすべてのユーザーにこのアクセス権を付与します。 ユーザー アカウントを選択し、[ 選択 ] を使用して選択内容を保存します。 ユーザー、グループ、またはサービス プリンシパルへのアクセスを割り当てるオプションをオンにし、[次へ] を使用して続行します。

  6. [ 割り当ての種類 ] タブで、[ 割り当ての種類][アクティブ] に設定し、[ 割り当て期間][永続的] に設定します。

    Azure portal の [割り当ての種類] タブで [割り当ての種類] を [アクティブ] に設定し、[割り当て期間] を [永続的] に設定したスクリーンショット。

  7. [ 確認と割り当て] を選択して [ 確認と割り当て ] タブに移動し、[ 確認と割り当て ] をもう一度選択してロールの割り当てを完了します。

マネージド ID にストレージ アカウントへのアクセス権を付与する

SQL Server VM がプロビジョニングされたら、移行プロセス中にAzure Blob Storage アカウントにアクセスできるように、SQL Server VM のマネージド ID を Storage BLOB データ閲覧者 ロールに割り当てる必要があります。

まず、SQL Server VM が使用するマネージド ID の種類を決定する必要があります。 そのためには、次の手順に従います。

  1. Azure ポータルで Virtual machines リソースに移動します。
  2. [ セキュリティ] で [ ID] を 選択し、[ID] ウィンドウ 開きます。 システム割り当て ID またはユーザー割り当て ID のどちらを使用するか選択します。
    1. [ システム割り当て済み ] タブで、[ ステータス] トグルを使用して、システム割り当て ID がまだ有効になっていない場合に有効にすることができます。 システム割り当て ID が有効になっている場合、その後、Azure ロールの割り当てを選択して、Azure ロールの割り当てページに移動し、+ ロールの割り当ての追加 (プレビュー)を使用して、Storage Blob Data Reader権限をSQL Server VMのシステム割り当て ID に付与するために、StorageScopeとして選択し、リソースを選択します。
    2. User assigned タブには、SQL Server VM に接続されているユーザー割り当て ID の一覧が表示されます。 新しいユーザー割り当て ID を追加する場合は、+ ユーザー割り当て ID の追加を選択し、サブスクリプションから既存のユーザー割り当て ID を選択してSQL Server VM にアタッチします。 次の手順で必要になるので、Azure Blob Storageへの認証に使用するユーザー割り当て ID の名前をメモしておきます。

ユーザー割り当てマネージド ID のアクセス権をストレージ アカウントに付与するには、次の手順に従います。

  1. 移行に使用するAzure ポータルのAzure Blob Storage アカウントに移動します。
  2. リソース メニューから [アクセス制御 (IAM)] を選択します。
  3. [+ 追加] を使用して [ロールの割り当ての追加] を選択し、[ロールの割り当ての追加] ウィンドウを開きます。
  4. Storage Blob Data Reader ロールを検索して選択します。 次に、次へ を選択します。
  5. [ アクセスの割り当て ] で[ マネージド ID ] オプションをオンにします。
  6. [メンバーの選択] を使用して、[メンバーの選択] ウィンドウを開きます。
  7. マネージドID で、ユーザー割り当てマネージドID を選択します。
  8. Primary identity 名を Identity ページから以前にメモした SQL Server VM の情報を用いて検索して選択します。
  9. 選択を使用して選択内容を保存します。
  10. [ 確認と割り当て] を選択して [ 確認と割り当て ] タブに移動し、[ 確認と割り当て ] をもう一度選択してロールの割り当てを完了します。

Blob Storage アカウントにバックアップをアップロードする

BLOB コンテナーの準備が整い、SQL Server VM がコンテナーにアクセスできることを確認したら、Azure Blob Storage アカウントへのバックアップのアップロードを開始できます。 すべてのバックアップがストレージ アカウントにアップロードされたら、移行を続行する準備が整います。

バックアップをAzureにアップロードするには:

  1. SQL Server インスタンスでバックアップを作成
  2. バックアップをBlob Storage アカウントにコピーします。

次のベスト プラクティスを検討してください。

  • バックアップ ファイルのサイズを小さくし、破損したデータベースの移行を防ぐために、 COMPRESSION オプションと CHECKSUM オプションを使用してバックアップを作成します。
  • より小さなバッチでバックアップを作成します。
  • 並列アップロード スレッドを使用します。
  • 最後のバックアップ ファイルを可能な限り小さくします。
  • 同じAzure Blob Storage コンテナーを使用して複数のデータベースを移行するには、個々のデータベースのすべてのバックアップ ファイルをコンテナー内の別のフォルダーに配置します。 各データベース フォルダーにはフラット ファイル構造を使います。 データベースのフォルダー内にフォルダーを入れ子にすることはサポートされていません。

SQL Server インスタンスでバックアップを作成する

このセクションの手順では、ローカルにバックアップする方法を示しますが、 URL に直接バックアップすることもできます。

完全復旧モードに移行するデータベースを、ログ バックアップを許可するように設定します。

-- To permit log backups, before the full database backup, modify the database to use the full recovery
USE master;

ALTER DATABASE SampleDB
SET RECOVERY FULL;
GO

既存のバックアップがない場合は、データベースの完全バックアップ、差分バックアップ、ログ バックアップをローカル ストレージに手動で作成するには、次のサンプル T-SQL スクリプトを使用します。 CHECKSUM は必須ではありませんが、破損したデータベースの移行を防ぎ、復元時間を短縮するために有効にすることをお勧めします。

次の例では、データベースの完全バックアップをローカル ディスクに作成します。

-- Take full database backup to local disk
BACKUP DATABASE [SampleDB]
    TO DISK = 'C:\BACKUP\SampleDB_full.bak'
    WITH INIT, COMPRESSION, CHECKSUM;
GO

次の例では、データベースの差分バックアップをローカル ディスクに作成します。

-- Take differential database backup to local disk
BACKUP DATABASE [SampleDB]
    TO DISK = 'C:\BACKUP\SampleDB_diff.bak'
    WITH DIFFERENTIAL, COMPRESSION, CHECKSUM;
GO

次の例では、データベースのトランザクション ログ バックアップをローカル ディスクに作成します。

-- Take transactional log backup to local disk
BACKUP LOG [SampleDB]
    TO DISK = 'C:\BACKUP\SampleDB_log.trn'
    WITH COMPRESSION, CHECKSUM;
GO

Blob Storage アカウントにバックアップをコピーする

バックアップの準備ができたら、SQL Server VM へのデータベースの移行を開始するには、次の方法を使用して、既存のバックアップをBlob Storage アカウントにコピーします。

同じAzure Blob Storage コンテナーを使用して複数のデータベースを移行するには、個々のデータベースのすべてのバックアップ ファイルをコンテナー内の別のフォルダーに配置します。 各データベース フォルダーにはフラット ファイル構造を使います。 データベースのフォルダー内にフォルダーを入れ子にすることはサポートされていません。

SQL Server VM ストレージ アクセスを検証する

SQL Server VM がBlob Storage アカウントにアクセスできることを検証します。

まず、full_0_0.bak などのデータベース バックアップをAzure Blob Storage コンテナーにアップロードします。

次に、SQL Server VM に接続し、サンプル テスト クエリを実行して、SQL Server VM がコンテナー内のバックアップにアクセスできるかどうかを判断します。

SAS トークンを使用してストレージ アカウントに対する認証を行う場合は、<sastoken> を SAS トークンに置き換え、SQL Server VM で次のクエリを実行します。

CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/databases]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = '<sastoken>';

RESTORE HEADERONLY
    FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<containername>/full_0_0.bak';

SQL SERVER VM を SQL IaaS Agent 拡張機能に登録する

ターゲット SQL Server VM が既に存在する場合は、Azure ポータルで移行ターゲットとして選択する前に、それを SQL IaaS Agent 拡張機能に登録する必要があります。 ターゲット SQL Server VM がまだ存在しない場合は、移行プロセス中に新しい VM をプロビジョニングでき、SQL IaaS Agent 拡張機能に自動的に登録されます。

制限事項

Azure ポータルを使用して SQL Server データベースを Azure VM 上のSQL Serverに移行する場合は、次の制限事項を考慮してください。

  • 1 つのデータベースを移行する場合は、データベース のバックアップをデータベース フォルダー (コンテナー ルート フォルダーを含む) 内のフラット ファイル構造に配置する必要があります。 入れ子はサポートされていないため、これらのフォルダーを入れ子にすることはできません。
  • 同じAzure Blob Storage コンテナーを使用して複数のデータベースを移行する場合は、コンテナー内の個別のフォルダーに異なるデータベースのバックアップ ファイルを配置する必要があります。
  • DMS を使用して、Azure VM 上のターゲット SQL Server内の既存のデータベースを上書きすることはできません。
  • SQL Server移行では、ソース トポロジに合わせてターゲットで高可用性とディザスター リカバリーを構成することはできません。
  • 次のサーバー オブジェクトはサポートされていません。
    • SQL Server Agent のジョブ
    • 資格情報
    • SQL Server Integration Services (SSIS) パッケージ
    • サーバー監査
  • DMS を使用したデータベース移行には、Azure Data Factory (ADF) から作成された既存のセルフホステッド統合ランタイムを使用することはできません。
  • ターゲット バージョンが SQL Server 2008 以前の VM は、Azure VM 上のSQL Serverに移行する場合はサポートされません。
  • 移行には、SQL IaaS Agent 拡張機能への登録が必要です。 拡張機能では、既定のインスタンスまたは単一の名前付きインスタンスのみがサポートされます。
  • 1 つ以上の移行を同時に使用して、ターゲットと同じAzure VM に最大 100 個のデータベースを移行できます。 さらに、100 個のデータベースを使用した移行が完了したら、少なくとも 30 分間待ってから、ターゲットと同じSQL ServerのAzure VM に新しい移行を開始します。 また、各データベースのすべての移行操作 (移行の開始、一括移行) には、順次数分かかります。 たとえば、100 個のデータベースを移行するには、移行キューの作成に約 200 (2 x 100) 分、100 個のデータベース (バックアップと復元のタイミングを除く) をすべてカットオーバーするのに約 100 (1 x 100) 分かかる場合があります。 そのため、データベースの数が増えるほど、移行は遅くなります。 厳密な移行テストに基づいて、より長い移行期間を事前にスケジュールするか、多数のデータベースをバッチにパーティション分割して、Azure VM 上のSQL Serverに移行する必要があります。
  • VM がバックアップ ファイルにアクセスできるようにAzure Storage アカウントのネットワーク/ファイアウォールを構成する以外に、Azure VM 上のSQL Serverのネットワーク/ファイアウォールを構成して、ストレージ アカウントへの送信接続を許可する必要もあります。
  • SQL Server移行の進行中は、ターゲット Azure VM の電源をオンのままにしておく必要があります。 また、新しい移行を作成する場合は、移行中の移行をフェールオーバーまたはキャンセルします。

次のステップ