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

重要

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 Database に移行することを検討してください。

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

Azure Database Migration Service を使用して、SQL Server インスタンスから Azure SQL Database にデータベースを移行することができます。 このチュートリアルでは、Azure Database Migration Service を使用して、SQL Server 2016 (以降) のオンプレミス インスタンスに復元された AdventureWorks2016 データベースを、Azure SQL Database の単一データベースまたはプールされたデータベースに移行します。

学習内容:

  • Data Migration Assistant を使用して、障害となっている問題についてオンプレミス データベースを評価する。
  • Data Migration Assistant を使用して、データベース サンプル スキーマを移行する。
  • Azure DataMigration リソース プロバイダーを登録する。
  • Azure Database Migration Service のインスタンスを作成する。
  • Azure Database Migration Service を使用して移行プロジェクトを作成する。
  • 移行を実行する。
  • 移行を監視する。

前提条件

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

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

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

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

  • Azure portal を使用した Azure SQL Database 内のデータベースの作成に関する記事の詳細に従って、Azure SQL Database 内にデータベースを作成します。 このチュートリアルでは、Azure SQL Database の名前を AdventureWorksAzure としていますが、任意の名前を指定することもできます。

    Note

    SQL Server Integration Services (SSIS) を使用していて、SSIS プロジェクト/パッケージ (SSISDB) のカタログ データベースを SQL Server から Azure SQL Database に移行する場合は、SSIS を Azure Data Factory (ADF) にプロビジョニングしたときに移行先 SSISDB が自動的に作成および管理されます。 SSIS パッケージの移行の詳細については、記事「SQL Server Integration Services パッケージを Azure に移行する」を参照してください。

  • 最新バージョンの Data Migration Assistant をダウンロードしてインストールします。

  • Azure Resource Manager デプロイ モデルを使用して、Azure Database Migration Service 用の Microsoft Azure Virtual Network を作成します。これで、ExpressRoute または VPN を使用したオンプレミスのソース サーバーとのサイト間接続が確立されます。 仮想ネットワークの作成方法の詳細については、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 のインスタンスを作成する方法に関する記事を参照してください。

  • 仮想ネットワークのネットワーク セキュリティ グループの送信セキュリティ規則によって、ServiceBus、Storage、AzureMonitor の ServiceTag の送信ポート 443 がブロックされていないことを確認します。 Azure 仮想ネットワークの 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 が移行のためにソース データベースにアクセスできるように、ファイアウォール規則を追加することが必要な場合があります。

  • Azure SQL Database のサーバー レベル IP ファイアウォール規則を作成して、Azure Database Migration Service がターゲット データベースにアクセスできるようにします。 Azure Database Migration Service に使用する仮想ネットワークのサブネット範囲を指定します。

  • ソースの SQL Server インスタンスへの接続に使用される資格情報に、CONTROL SERVER アクセス許可を含めます。

  • ターゲットの Azure SQL Database インスタンスへの接続に使用される資格情報に、ターゲット データベースに対する CONTROL DATABASE アクセス許可を含めます。

    重要

    Azure Database Migration Service のインスタンスを作成するには、通常は同じリソース グループ内にない仮想ネットワーク設定にアクセスする必要があります。 そのため、DMS のインスタンスを作成するユーザーには、サブスクリプション レベルでのアクセス許可が必要です。 必要なロール (ロールは必要に応じて割り当て可能) を作成するには、次のスクリプトを実行します。

    
    $readerActions = `
    "Microsoft.Network/networkInterfaces/ipConfigurations/read", `
    "Microsoft.DataMigration/*/read", `
    "Microsoft.Resources/subscriptions/resourceGroups/read"
    
    $writerActions = `
    "Microsoft.DataMigration/services/*/write", `
    "Microsoft.DataMigration/services/*/delete", `
    "Microsoft.DataMigration/services/*/action", `
    "Microsoft.Network/virtualNetworks/subnets/join/action", `
    "Microsoft.Network/virtualNetworks/write", `
    "Microsoft.Network/virtualNetworks/read", `
    "Microsoft.Resources/deployments/validate/action", `
    "Microsoft.Resources/deployments/*/read", `
    "Microsoft.Resources/deployments/*/write"
    
    $writerActions += $readerActions
    
    # TODO: replace with actual subscription IDs
    $subScopes = ,"/subscriptions/00000000-0000-0000-0000-000000000000/","/subscriptions/11111111-1111-1111-1111-111111111111/"
    
    function New-DmsReaderRole() {
    $aRole = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
    $aRole.Name = "Azure Database Migration Reader"
    $aRole.Description = "Lets you perform read only actions on DMS service/project/tasks."
    $aRole.IsCustom = $true
    $aRole.Actions = $readerActions
    $aRole.NotActions = @()
    
    $aRole.AssignableScopes = $subScopes
    #Create the role
    New-AzRoleDefinition -Role $aRole
    }
    
    function New-DmsContributorRole() {
    $aRole = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
    $aRole.Name = "Azure Database Migration Contributor"
    $aRole.Description = "Lets you perform CRUD actions on DMS service/project/tasks."
    $aRole.IsCustom = $true
    $aRole.Actions = $writerActions
    $aRole.NotActions = @()
    
      $aRole.AssignableScopes = $subScopes
    #Create the role
    New-AzRoleDefinition -Role $aRole
    }
    
    function Update-DmsReaderRole() {
    $aRole = Get-AzRoleDefinition "Azure Database Migration Reader"
    $aRole.Actions = $readerActions
    $aRole.NotActions = @()
    Set-AzRoleDefinition -Role $aRole
    }
    
    function Update-DmsConributorRole() {
    $aRole = Get-AzRoleDefinition "Azure Database Migration Contributor"
    $aRole.Actions = $writerActions
    $aRole.NotActions = @()
    Set-AzRoleDefinition -Role $aRole
    }
    
    # Invoke above functions
    New-DmsReaderRole
    New-DmsContributorRole
    Update-DmsReaderRole
    Update-DmsConributorRole
    

オンプレミス データベースを評価する

SQL Server インスタンスから Azure SQL Database の単一データベースまたはプールされたデータベースにデータを移行する前に、SQL Server データベースを評価して、移行を妨げる問題がないかどうかを確認する必要があります。 Data Migration Assistant を使用し、SQL Server の移行評価の実行に関する記事の手順に従って、オンプレミス データベースの評価を実行します。 必要な手順の概要は次のとおりです。

  1. Data Migration Assistant で、新規 (+) アイコンを選択し、[評価] プロジェクト タイプを選択します。

  2. プロジェクト名を指定します。 [評価の種類] ドロップダウン リストで、 [データベース エンジン] を選択し、 [ソース サーバーの種類] テキスト ボックスで [SQL Server][ターゲット サーバーの種類] テキスト ボックスで [Azure SQL Database] を選択します。次に、 [作成] を選択してプロジェクトを作成します。

    Azure SQL Database の単一データベースまたはプールされたデータベースに移行するソース SQL Server データベースを評価する際には、次のいずれかまたは両方の評価レポート タイプを選択できます。

    • データベース互換性をチェックする
    • 機能の類似性をチェックする

    どちらのレポート タイプも、既定で選択されています。

  3. Data Migration Assistant の [オプション] 画面で、 [次へ] を選択します。

  4. [ソースの選択] 画面の [サーバーへの接続] ダイアログ ボックスで、SQL Server への接続詳細を入力し、 [接続] を選択します。

  5. [ソースの追加] ダイアログ ボックスで、 [AdventureWorks2016][追加][評価の開始] の順に選択します。

    Note

    SSIS を使用する場合、現在、DMA ではソース SSISDB の評価はサポートされていません。 ただし、SSIS プロジェクト/パッケージは、Azure SQL Database によってホストされている移行先 SSISDB に再デプロイされるため、評価/検証されます。 SSIS パッケージの移行の詳細については、記事「SQL Server Integration Services パッケージを Azure に移行する」を参照してください。

    評価が完了すると、次のグラフィックに結果が表示されます。

    Assess data migration

    Azure SQL Database のデータベースの場合、この評価によって、単一データベースまたはプールされたデータベースへのデプロイで、機能パリティの問題と移行の障害となっている問題が特定されます。

    • SQL Server の機能類似性カテゴリでは、幅広い推奨事項や、Azure で利用できる代替アプローチ、および移行プロジェクトの計画に役立つ移行手順を確認できます。
    • 互換性問題カテゴリでは、部分的にサポートされている機能やサポートされていない機能を確認できます。この情報は、SQL Server データベースから Azure SQL Database への移行を妨げる可能性がある互換性の問題を反映しています。 また、それらの問題への対処に役立つ推奨事項も確認できます。
  6. 特定のオプションを選択して、移行を妨げる問題と機能の類似性の問題についての評価結果をレビューします。

サンプル スキーマを移行する

評価結果をレビューし、選択したデータベースが Azure SQL Database の単一データベースまたはプールされたデータベースに移行可能であることを確認したら、DMA を使用してスキーマを Azure SQL Database に移行します。

Note

Data Migration Assistant で移行プロジェクトを作成する前に、Azure 内のデータベースが、前提要件で言及されたように既にプロビジョニングされていることを確認します。

重要

SSIS を使用する場合、現在 DMA ではソース SSISDB の移行はサポートされていませんが、Azure SQL Database によってホストされている移行先 SSISDB に SSIS プロジェクト/パッケージを再デプロイすることはできます。 SSIS パッケージの移行の詳細については、記事「SQL Server Integration Services パッケージを Azure に移行する」を参照してください。

AdventureWorks2016 スキーマを Azure SQL Database の単一データベースまたはプールされたデータベースに移行するには、次の手順を実行します。

  1. Data Migration Assistant で、新規 (+) アイコンを選択し、 [プロジェクト タイプ][移行] を選択します。

  2. プロジェクト名を指定し、 [Source server type](ソース サーバーの種類) テキスト ボックスで SQL Server を選択した後、 [ターゲット サーバーの種類] テキスト ボックスで Azure SQL Database を選択します。

  3. [移行スコープ] で、 [Schema only](スキーマのみ) を選択します。

    上記の手順を実行すると、Data Migration Assistant のインターフェイスの表示が次の図のようになります。

    Create Data Migration Assistant Project

  4. [作成] を選択してプロジェクトを作成します。

  5. Data Migration Assistant で、SQL Server のソース接続の詳細を指定し、 [接続] を選択して、AdventureWorks2016 データベースを選択します。

    Data Migration Assistant Source Connection Details

  6. [次へ] を選択し、 [Connect to target server](対象サーバーへの接続) で Azure SQL Database のターゲット接続の詳細を指定し、 [接続] を選択し、Azure SQL Database で事前プロビジョニングした AdventureWorksAzure データベースを選択します。

    Data Migration Assistant Target Connection Details

  7. [次へ] を選択して [オブジェクトの選択] 画面に進みます。この画面では、Azure SQL Database にデプロイする必要がある AdventureWorks2016 データベース内のスキーマ オブジェクトを指定できます。

    既定では、すべてのオブジェクトが選択されています。

    Generate SQL Scripts

  8. [SQL スクリプトの生成] を選択して SQL スクリプトを作成し、スクリプトにエラーがないかを確認します。

    Schema Script

  9. [Deploy schema](スキーマのデプロイ) を選択して Azure SQL Database にスキーマをデプロイし、スキーマがデプロイされたら、ターゲット サーバーに異常がないかをチェックします。

    Deploy Schema

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

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. [新しい移行プロジェクト] 画面でプロジェクトの名前を指定し、 [ソース サーバーの種類] テキスト ボックスで [SQL Server] を選択した後、 [ターゲット サーバーの種類] テキスト ボックスで [Azure SQL Database] を選択し、 [Choose Migration activity type](移行アクティビティの種類を選択)[データ移行] を選択します。

    Create Database Migration Service Project

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

ソース詳細を指定する

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

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

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

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

    注意事項

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

    重要

    SSIS を使用する場合、現在 DMS ではソース SSISDB の移行はサポートされていませんが、Azure SQL Database によってホストされている移行先 SSISDB に SSIS プロジェクト/パッケージを再デプロイすることはできます。 SSIS パッケージの移行の詳細については、記事「SQL Server Integration Services パッケージを Azure に移行する」を参照してください。

    Source Details

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

移行するデータベースを選択する

Azure SQL Database に移行するすべてのデータベースまたは特定のデータベースを選択します。 DMS によって、選択したデータベースの移行にかかる予測時間が示されます。 移行によるダウンタイムを許容できる場合は、移行を続行します。 移行によるダウンタイムを許容できない場合は、ダウンタイムがほぼゼロの SQL Managed Instance への移行を検討するか、改善のためのアイデアや提案、その他のフィードバックを Azure Community フォーラム — Azure Database Migration Service で提出します。

  1. 使用可能なデータベースの一覧から、移行するデータベースを選択します。

  2. 予想されるダウンタイムを確認します。 許容できる場合は、[次へ: ターゲットの選択 >>] を選択します。

    Source databases

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

  1. [ターゲットの選択] 画面で、Azure SQL Database に対する認証設定を指定します。

    Select target

    Note

    現在、サポートされる認証の種類は SQL 認証のみです。

  2. Next:ターゲット データベースへマッピング を選択し、移行用のソース データベースとターゲット データベースをマップします。

    ターゲット データベースにソース データベースと同じデータベース名が含まれている場合、Azure Database Migration Service では、既定でターゲット データベースが選択されます。

    Map to target databases

  3. Next:Configuration migration settings(次へ: 構成の移行設定) を選択し、テーブルの一覧を展開して、影響を受けるフィールドの一覧を確認します。

    Azure Database Migration Service では、ターゲット Azure SQL Database インスタンスに存在する空のソース テーブルがすべて自動的に選択されます。 データが既に含まれているテーブルを再移行する場合は、このブレードでテーブルを明示的に選択する必要があります。

    Select tables

  4. Next:概要 を選択し、移行構成を確認します。アクティビティ名 ボックスに、移行アクティビティの名前を指定します。

    Choose validation option

移行を実行する

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

    移行アクティビティ ウィンドウが表示され、アクティビティの [状態][Pending](保留) になっています。

    Activity Status

移行を監視する

  1. 移行アクティビティ画面で、移行の [状態][完了] になるまで [最新の情報に更新] を選択して表示を更新します。

    Activity Status Completed

  2. ターゲットの Azure SQL Database にターゲット データベースがあることを確認します。

その他のリソース