チュートリアル: DMS (クラシック) を使用してオンラインで SQL Server を Azure SQL Managed Instance に移行する

重要

Azure Database Migration Service (クラシック) - SQL シナリオは、非推奨になる予定です2023 年 8 月 1 日以降、Azure portal から SQL Server シナリオ用の新しい Database Migration Service (クラシック) リソースを作成することはできなくなります。 このサービスは、すべてのお客様に対して 2026 年 3 月 15 日に廃止されます。 複数のデータベース ソースから Azure SQL ターゲットへのシームレスな移行のために、Microsoft では、最新バージョンの Azure Database Migration Service を使用することをお勧めします。これは、Azure Data Studio の拡張機能である Azure SQL Migration として、または Azure Portal を介して、または Azure PowerShell と Azure CLI を使用して利用できます。 詳しくは、提供終了の通知: Database Migration Service (クラシック) に関する記事をご覧ください。

Note

このチュートリアルでは、古いバージョンの Azure Database Migration Service を使用します。 機能とサポート性を向上させるために、Azure Data Studio 用の Azure SQL 移行拡張機能を使用して、Azure SQL Managed Instance に移行することを検討してください。

バージョン間の機能の比較については、「バージョンの比較」を確認してください。

Azure Database Migration Service を使用して、最小限のダウンタイムで SQL Server インスタンスから Azure SQL Managed Instance にデータベースを移行することができます。 一定の手作業が必要になる可能性のあるその他の方法については、記事「Azure SQL Managed Instance への SQL Server インスタンスの移行」を参照してください。

このチュートリアルでは、Azure Database Migration Service を使用して、SQL Server のオンプレミスのインスタンスから SQL Managed Instance に、最小限のダウンタイムで AdventureWorks2016 データベースを移行します。

以下の方法について説明します。

  • Azure DataMigration リソース プロバイダーを登録する。
  • Azure Database Migration Service のインスタンスを作成する。
  • Azure Database Migration Service を使用して、移行プロジェクトを作成し、オンライン移行を開始する。
  • 移行を監視する。
  • 準備ができたら、移行カットオーバーを実行します。

重要

Azure Database Migration Service を使用した SQL Server から SQL Managed Instance へのオンライン移行を行うには、データベースを移行するためにそのサービスで使用できる SMB ネットワーク共有上にデータベースの完全バックアップとその後のログ バックアップを用意する必要があります。 Azure Database Migration Service によってバックアップが開始されることはなく、移行には既存のバックアップが使用されます。これは、ディザスター リカバリー計画の一部として既に作成されている場合があります。 各バックアップは、独立したバックアップ ファイルまたは複数のバックアップ ファイルに書き込まれます。 ただし、1 つのバックアップ メディアに複数のバックアップ (つまり、完全バックアップとトランザクション ログ) を追加することはサポートされていません。 大きなバックアップの移行に関連する潜在的な問題が発生する可能性を低減するには、圧縮されたバックアップを使用します。

Note

Azure Database Migration Service を使用してオンライン移行を実行するには、Premium 価格レベルに基づいてインスタンスを作成する必要があります。

重要

最適な移行エクスペリエンスのために、ターゲット データベースと同じ Azure リージョンに Azure Database Migration Service のインスタンスを作成することをお勧めします。 リージョンや地域をまたいでデータを移動する場合、移行プロセスが遅くなり、エラーが発生する可能性があります。

重要

インスタンスの再構成や計画メンテナンスによる中断のリスクを最小限に抑えるために、オンライン移行プロセスの期間をできるだけ短くしてください。 このようなイベントが発生した場合、移行プロセスは最初から開始されます。 計画メンテナンスの場合、移行プロセスが再開されるまでに 36 時間の猶予期間があります。

ヒント

Azure Database Migration Service では、データベースをオフラインまたはオンラインで移行できます。 "オフライン" 移行では、移行の開始時がアプリケーションのダウンタイムの起点になります。 移行の完了時点から新しい環境に切り替わるまでの時間にダウンタイムを制限するには、"オンライン" 移行を使用してください。 オフライン移行をテストして、ダウンタイムが許容範囲内であるかどうかを判断することをお勧めします。 予想されるダウンタイムが許容できない場合は、オンライン移行を行います。

この記事では、SQL Server から SQL Managed Instance へのオンライン移行について説明します。 オフライン移行については、DMS を使用してオフラインで SQL Server を SQL Managed Instance に移行する方法に関するページを参照してください。

前提条件

このチュートリアルを完了するには、以下を実行する必要があります。

  • SQL Server 2016 以降をダウンロードしてインストールします。

  • SQL Server Express のインストール時に既定では無効になっている TCP/IP プロトコルを有効にします。有効にする手順については、サーバー ネットワーク プロトコルの有効化または無効化に関する記事を参照してください。

  • AdventureWorks2016 データベースを SQL Server インスタンスに復元します。

  • Azure Resource Manager デプロイ モデルを使用して、Azure Database Migration Service 用の Microsoft Azure 仮想ネットワークを作成します。これで、ExpressRoute または VPN を使用したオンプレミスのソース サーバーとのサイト間接続を確立します。 Azure Database Migration Service を使用した SQL Managed Instance の移行のネットワーク トポロジについて学習してください。 仮想ネットワークの作成方法の詳細については、Virtual Network のドキュメントを参照してください。特に、詳細な手順が記載されたクイックスタートの記事を参照してください。

    Note

    仮想ネットワークのセットアップ中、Microsoft へのネットワーク ピアリングに ExpressRoute を使用する場合は、サービスのプロビジョニング先となるサブネットに、次のサービス エンドポイントを追加してください。

    • ターゲット データベース エンドポイント (SQL エンドポイント、Azure Cosmos DB エンドポイントなど)
    • ストレージ エンドポイント
    • サービス バス エンドポイント

    Azure Database Migration Service にはインターネット接続がないため、この構成が必要となります。

    オンプレミス ネットワークと Azure の間にサイト間接続がない場合、またはサイト間接続の帯域幅が制限されている場合は、Azure Database Migration Service をハイブリッド モード (プレビュー) で使用することを検討してください。 ハイブリッド モードでは、オンプレミスの移行 worker と、クラウドで実行されている Azure Database Migration Service のインスタンスを利用します。 ハイブリッド モードで Azure Database Migration Service のインスタンスを作成するには、Azure portal を使用してハイブリッド モードで Azure Database Migration Service のインスタンスを作成する方法に関する記事を参照してください。

    重要

    移行の一環として使用されるストレージ アカウントに関して、次のいずれかの作業を行う必要があります。

    • ストレージ アカウントへのアクセスをすべてのネットワークに許可します。
    • MI サブネットでサブネットの委任をオンにし、このサブネットを許可するようにストレージ アカウントのファイアウォール規則を更新します。
    • Azure Database Migration Service を使用するプライベート エンドポイントを持つ Azure Storage アカウントは、使用することができません。
  • 仮想ネットワークのネットワーク セキュリティ グループの規則によって、ServiceBus、Storage、AzureMonitor の ServiceTag の送信ポート 443 がブロックされていないことを確認します。 仮想ネットワークの NSG トラフィックのフィルター処理の詳細については、ネットワーク セキュリティ グループによるネットワーク トラフィックのフィルター処理に関する記事を参照してください。

  • ソース データベース エンジンへのアクセスのために Windows ファイアウォールを構成します。

  • Azure Database Migration Service でソース SQL Server にアクセスできるように Windows ファイアウォールを開放します。既定では TCP ポート 1433 が使用されます。 使用している既定のインスタンスが他のポートでリッスンしている場合は、それをファイアウォールに追加してください。

  • 動的ポートを使用して複数の名前付き SQL Server インスタンスを実行している場合は、SQL Browser サービスを有効にし、ファイアウォール経由の UDP ポート 1434 へのアクセスを許可することをお勧めします。これにより、Azure Database Migration Service はソース サーバー上の名前付きインスタンスに接続できるようになります。

  • ソース データベースの前に設置されたファイアウォール アプライアンスを使用する場合は、Azure Database Migration Service が移行のためにソース データベースにアクセスし、SMB ポート 445 経由でファイルにアクセスできるように、ファイアウォール規則を追加することが必要な場合があります。

  • SQL マネージド インスタンスを作成します。手順の詳細については、Azure portal で SQL マネージド インスタンスを作成する方法に関する記事を参照してください。

  • ソースの SQL Server とターゲットの SQL Managed Instance の接続に使用するログインが、sysadmin サーバー ロールのメンバーであることを確認します。

  • Azure Database Migration Service でデータベースの移行に使用できる、すべてのデータベースの完全なデータベース バックアップ ファイルと、その後のトランザクション ログのバックアップ ファイルが格納されている、SMB ネットワーク共有を提供します。

  • 作成したネットワーク共有に対して、ソース SQL Server インスタンスを実行しているサービス アカウントが書き込み特権を持っていること、およびソース サーバーのコンピューター アカウントが読み取り/書き込みアクセス権を持っていることを確認します。

  • 作成したネットワーク共有に対するフル コントロール権限を持つ Windows ユーザー (とパスワード) をメモしておきます。 Azure Database Migration Service は、ユーザーの資格情報を借用して、復元操作のために、Azure Storage コンテナーにバックアップ ファイルをアップロードします。

  • Microsoft Entra のアプリケーション ID を作成します。これにより、Azure Database Migration Service がターゲットの Azure SQL Managed Instance と Azure Storage Container に接続するために使用できる、アプリケーション ID キーが生成されます。 詳細については、リソースにアクセスできる Microsoft Entra アプリケーションとサービス プリンシパルをポータルで作成するに関する記事を参照してください。

    Note

    Azure Database Migration Service によって使用されるアプリケーション ID では、サービス プリンシパルに対するシークレット (パスワードベース) 認証がサポートされています。 証明書ベースの認証は、サポートされていません。

    Note

    Azure Database Migration Service では、指定されたアプリケーション ID のサブスクリプションに対する共同作成者アクセス許可が必要です。 または、Azure Database Migration Service で必要な特定のアクセス許可を付与するカスタム ロールを作成することもできます。 カスタム ロールの使用に関する詳細な手順については、「SQL Server から SQL Managed Instance にオンライン移行するためのカスタム ロール」を参照してください。

  • DMS サービスがデータベース バックアップ ファイルをアップロードしてデータベースの移行に使用できるように、標準パフォーマンス レベルと Azure Storage Account のメモを作成します。 Azure Storage アカウントは、Azure Database Migration Service インスタンスの作成先と同じリージョンに作成してください。

    Note

    オンライン移行を使用して、Transparent Data Encryption によって保護されたデータベースをマネージド インスタンスに移行する場合は、データベースの復元の前に、オンプレミスまたは Azure VM SQL Server インスタンスの対応する証明書を移行する必要があります。 詳細な手順については、TDE 証明書のマネージド インスタンスへの移行に関するページを参照してください。

リソース プロバイダーの登録

Database Migration Service の最初のインスタンスを作成する前に、Microsoft.DataMigration リソース プロバイダーを登録します。

  1. Azure portal にサインインします。 サブスクリプションを検索して選択します。

    Show portal subscriptions

  2. Azure Database Migration Service のインスタンスを作成するサブスクリプションを選択してから、 [リソース プロバイダー] を選びます。

    Show resource providers

  3. 移行を検索してから、 [Microsoft.DataMigration][登録] を選択します。

    Register resource provider

Azure Database Migration Service インスタンスを作成する

  1. Azure portal メニューまたは [ホーム] ページで、 [リソースの作成] を選択します。 [Azure Database Migration Service] を検索して選択します。

    Azure Marketplace

  2. [Azure Database Migration Service] 画面で、 [作成] を選択します。

    Create Azure Database Migration Service instance

    適切な [ソース サーバーの種類][ターゲット サーバーの種類] を選択し、[Database Migration Service (クラシック)] オプションを選択します。

    Select Database Migration Service (Classic) scenario

  3. [移行サービスの作成] の [基本] 画面で、次の手順を実行します。

    • サブスクリプションを選択します。
    • 新しいリソース グループを作成するか、既存のリソース グループを選択します。
    • Azure Database Migration Service のインスタンスの名前を指定します。
    • Azure Database Migration Service のインスタンスを作成する場所を選択します。
    • サービス モードとして [Azure] を選択します。
    • 価格レベルを選択します。 コストと価格レベルの詳細については、価格に関するページを参照してください。

    Configure Azure Database Migration Service instance basics settings

    • [次へ: ネットワーク] を選択します。
  4. [移行サービスの作成] の [ネットワーク] 画面で、次の手順を実行します。

    • 既存の仮想ネットワークを選択するか、新しく作成します。 この仮想ネットワークによって、Azure Database Migration Service に、ソース サーバーとターゲット インスタンスへのアクセスが提供されます。 Azure portal で仮想ネットワークを作成する方法の詳細については、「Azure portal を使用した仮想ネットワークの作成」を参照してください。

    Configure Azure Database Migration Service instance networking settings

    • [確認と作成] を選択して詳細を確認し、 [作成] を選択してサービスを作成します。

    • しばらくすると、Azure Database Migration Service のインスタンスが作成され、使用できるようになります。

    Migration service created

移行プロジェクトを作成する

サービスのインスタンスが作成されたら、Azure portal 内でそのサービスを探して開き、新しい移行プロジェクトを作成します。

  1. Azure portal のメニューで、 [すべてのサービス] を選択します。 [Azure Database Migration Service] を検索して選択します。

    Locate all instances of Azure Database Migration Service

  2. [Azure Database Migration Service] 画面で、作成した Azure Database Migration Service インスタンスを選択します。

  3. [新しい移行プロジェクト] を選択します。

    Locate your instance of Azure Database Migration Service

  4. [新しい移行プロジェクト] 画面でプロジェクトの名前を指定し、[Source server type](ソース サーバーの種類) ボックスで [SQL Server] を選択した後、[ターゲット サーバーの種類] ボックスで [Azure SQL Database Managed Instance] を選択し、[アクティビティの種類を選択します][オンライン データの移行] を選択します。

    Create Database Migration Service Project

  5. [アクティビティの作成と実行] を選択してプロジェクトを作成し、移行アクティビティを実行します。

ソース詳細を指定する

  1. [ソースの選択] 画面で、ソース SQL Server インスタンスの接続の詳細を指定します。

    ソース SQL Server インスタンス名には、必ず完全修飾ドメイン名 (FQDN) を使用してください。 DNS の名前解決ができない場合は、IP アドレスを使用することもできます。

  2. 信頼できる証明書をサーバーにインストールしていない場合は、 [サーバー証明書を信頼する] チェック ボックスをオンにします。

    信頼できる証明書がインストールされていない場合、SQL Server はインスタンスの開始時に自己署名証明書を生成します。 この証明書は、クライアント接続の資格情報の暗号化に使用されます。

    注意事項

    自己署名証明書で暗号化されている TLS 接続のセキュリティは強力ではありません。 man-in-the-middle (中間者) 攻撃を受ける可能性が高くなります。 実稼働環境やインターネットに接続しているサーバーでは、自己署名証明書を使用した TLS 接続は使用しないでください。

    Source Details

  3. [次へ: ターゲットの選択] を選択します。

ターゲット詳細を指定する

  1. [ターゲットの選択] 画面でアプリケーション IDキーを指定します。DMS インスタンスは、これらを使用することで、SQL Managed Instance のターゲット インスタンスと Azure Storage アカウントに接続できます。

    詳細については、リソースにアクセスできる Microsoft Entra アプリケーションとサービス プリンシパルをポータルで作成するに関する記事を参照してください。

  2. SQL Managed Instance のターゲット インスタンスを収納するサブスクリプションを選択した後、ターゲットの SQL Managed Instance を選択します。

    SQL Managed Instance のプロビジョニングがまだ済んでいない場合は、インスタンスのプロビジョニングに役立つリンクを選択します。 SQL Managed Instance の準備ができたら、この特定のプロジェクトに戻って移行を実行します。

  3. SQL Managed Instance に接続するための SQL ユーザーパスワードを入力します。

    Select Target

  4. [次へ: データベースの選択] を選択します。

ソース データベースの指定

  1. [データベースの選択] 画面で、移行するソース データベースを選択します。

Select Source Databases

重要

SQL Server Integration Services (SSIS) を使用する場合、DMS では現在、SQL Server から SQL Managed Instance への SSIS プロジェクトまたはパッケージ (SSISDB) 用のカタログ データベースの移行がサポートされていません。 ただし、Azure Data Factory (ADF) に SSIS をプロビジョニングした後、SQL Managed Instance によってホストされている移行先 SSISDB に SSIS プロジェクトまたはパッケージを再デプロイすることはできます。 SSIS パッケージの移行の詳細については、記事「SQL Server Integration Services パッケージを Azure に移行する」を参照してください。

  1. [次へ: 移行の設定の構成] を選択します。

移行の設定の構成

  1. [移行の設定の構成] 画面で、次の詳細情報を入力します。

    パラメーター 説明
    SMB ネットワーク場所の共有 Azure Database Migration Service が移行に使用できる、完全なデータベース バックアップ ファイルとトランザクション ログのバックアップ ファイルを収納する、ローカルな SMB ネットワーク共有または Azure ファイル共有です。 ソースの SQL Server インスタンスを実行しているサービス アカウントには、このネットワーク共有での読み取り/書き込み権限がなければなりません。 ネットワーク共有内のサーバーの FQDN または IP アドレスを指定します (たとえば、"\\servername.domainname.com\backupfolder"、"\\IP address\backupfolder")。 パフォーマンスを向上するために、移行するデータベースごとに個別のフォルダーを使用することをお勧めします。 [詳細設定] オプションを使用すると、データベース レベルのファイル共有パスを指定できます。 SMB 共有への接続時に問題が発生した場合は、SMB 共有に関するページを参照してください。
    ユーザー名 上で指定したネットワーク共有に対するフル コントロール権限が Windows ユーザーにあることを確認してください。 Azure Database Migration Service は、ユーザーの資格情報を借用して、復元操作のために、Azure Storage コンテナーにバックアップ ファイルをアップロードします。 Azure ファイル共有を使用している場合は、先頭に AZURE\ を付けたストレージ アカウント名をユーザー名として使用してください。
    パスワード ユーザーのパスワード。 Azure ファイル共有を使用している場合は、ストレージ アカウント キーをパスワードとして使用してください。
    Azure Storage Account のサブスクリプション Azure Storage Account を収納するサブスクリプションを選択します。
    Azure Storage アカウント DMS が SMB ネットワーク共有からバックアップ ファイルをアップロードして、データベース移行に使用できるように、Azure Storage Account を選択します。 最適なファイル アップロードのパフォーマンスを得るには、DMS サービスと同じ地域にある Storage Account を選択することをお勧めします。

    Configure Migration Settings

    Note

    Azure Database Migration Service で "システム エラー 53" または "システム エラー 57" が表示される場合、Azure Database Migration Service が Azure ファイル共有にアクセスできないことが原因である可能性があります。 このいずれかのエラーが発生した場合は、こちらの手順に従って、ストレージ アカウントに仮想ネットワークからアクセスできるようにしてください。

    重要

    ループバック チェック機能が有効になっていて、ソース SQL Server とファイル共有が同じコンピューター上にある場合、ソースは FQDN を使用してファイル共有にアクセスできません。 この問題を解決するには、こちらの手順を使用して、ループバック チェック機能を無効にしてください。

  2. 概要 を選択します。

移行の概要を確認する

  1. [概要] 画面の [アクティビティ名] テキスト ボックスに、移行アクティビティの名前を指定します。

  2. 移行プロジェクトに関連付けられた詳細を確認します。

    Migration project summary

移行を実行して監視する

  1. [移行の開始] を選択します。

  2. 移行アクティビティ ウィンドウに、現在のデータベースの移行状態が表示されます。 [最新の情報に更新] を選択して、表示を更新してください。

    Migration activity in progress

    データベースとログインのカテゴリを展開して、該当するサーバー オブジェクトの移行状態を監視できます。

    Migration activity status

移行カットオーバーの実行

SQL Managed Instance のターゲット インスタンスで完全なデータベース バックアップが復元されたら、データベースは移行カットオーバーを実行するために使用できます。

  1. オンライン データベースの移行を完了する準備が整ったら、 [カットオーバーの開始] を選択します。

  2. ソース データベースへの着信トラフィックをすべて停止します。

  3. [ログ末尾のバックアップ] を採用し、バックアップ ファイルを SMB ネットワーク共有で使用できるようにしたら、この最後のトランザクション ログのバックアップが復元されるまで待機します。

    その時点で、[保留中の変更] が 0 に設定されたことがわかります。

  4. [確認] を選択したら、 [適用] を選択します。

    Preparing to complete cutover

    重要

    カットオーバーの後、Business Critical サービス レベルでの SQL Managed Instance の可用性だけは、AlwaysOn 高可用性グループに対して 3 つのセカンダリ レプリカをシードする必要があるため、General Purpose よりかなり長くかかることがあります。 この操作の所要時間は、データのサイズに依存します。詳細については、「管理操作の所要時間」を参照してください。

  5. データベース移行の状態が [完了] と表示されたら、SQL Managed Instance の新しいターゲット インスタンスにアプリケーションを接続します。

    Cutover complete

その他のリソース