移行の概要: SQL Server から Azure SQL Managed Instance

適用対象:Azure SQL Managed Instance

SQL Server データベースを Azure SQL Managed Instance に移行するためのオプションと考慮事項について説明します。

オンプレミスまたは次で動作している SQL Server データベースを移行できます。

  • SQL Server on Virtual Machines
  • Amazon EC2 (Elastic Compute Cloud)
  • SQL Server 用 Amazon RDS (Relational Database Service)
  • Google Compute Engine
  • Cloud SQL for SQL Server - GCP (Google Cloud Platform)

その他の移行ガイドについては、データベースの移行に関するページを参照してください。

概要

Azure SQL Managed Instance は、フル マネージド サービスを必要とする SQL Server ワークロードの推奨されるターゲット オプションであり、仮想マシンやそのオペレーティング システムを管理する必要ありません。 SQL Managed Instance を使用すると、アプリケーションやデータベースの変更を最小限にして、オンプレミスのアプリケーションを Azure に移動できます。 ネイティブの仮想ネットワーク サポートを使用してインスタンスの完全な分離が提供されます。

移行ターゲットのサポート可能性を検証するには、Azure SQL Managed Instance で利用可能な SQL Server データベース エンジンの機能を必ず確認してください。

考慮事項

移行のオプションを評価する際に考慮する必要がある主な要素は、次のとおりです。

  • サーバーとデータベースの数
  • データベースのサイズ
  • 移行プロセス中の許容可能なビジネス ダウンタイム

SQL Server データベースを SQL Managed Instance に移行する主な利点の 1 つは、インスタンス全体を移行するか、個々のデータベースのサブセットのみを移行するかを選択できる点です。 移行プロセスに次のものを含めるか慎重に計画します。

  • 同じインスタンスに併置する必要があるすべてのデータベース。
  • ログイン、資格情報、SQL Agent ジョブとオペレーター、サーバーレベルのトリガーなど、アプリケーションに必要なインスタンスレベルのオブジェクト。

Note

Azure SQL Managed Instance では、重大なシナリオでも 99.99% の可用性が保証されます。 SQL Managed Instance の一部の機能が原因で発生するオーバーヘッドは無効にできません。 詳細については、SQL Managed Instance と SQL Server 間でパフォーマンスの違いが生じる主な原因に関するブログ記事を参照してください。

適切なターゲットを選択する

Azure Data Studio 用の Azure SQL Migration 拡張機能を使用して、適切なサイズの Azure SQL Managed Instance のレコメンデーションを取得できます。 この拡張機能を使用すると、ソース SQL Server インスタンスからパフォーマンス データが収集され、最小限のコストでワークロードのパフォーマンス ニーズを満たす適切なサイズの Azure レコメンデーションが提供されます。 詳細については、「オンプレミスの SQL Server データベースに適したサイズの Azure レコメンデーションを取得する」を参照してください

パフォーマンス ベースラインへの適合のために、SQL Managed Instance の適切なサービス レベルと特性を選択する際に役立つ一般的なガイドラインを次に示します。

  • CPU 使用率ベースラインを使用して、SQL Server インスタンスで使用されるコア数に一致するマネージド インスタンスをプロビジョニングします。 ハードウェア構成の特性に合わせて、リソースのスケーリングが必要な場合があります。
  • メモリ使用量ベースラインを使用して、実際のメモリ割り当てに合った仮想コア オプションを選択します。
  • ファイル サブシステムのベースライン I/O 待機時間を使用して、General Purpose (5 ミリ秒を超える待機時間) と Business Critical (3 ミリ秒未満の待機時間) サービス レベルのいずれかを選択します。
  • ベースライン スループットを使用して、データとログ ファイルのサイズを事前に割り当てて、必要な I/O パフォーマンスを実現します。

デプロイ時にコンピューティングとストレージのリソースを選択し、後で、アプリケーションのダウンタイムを発生させずに Azure portal を使用してそれらを変更できます。

重要

マネージド インスタンスの仮想ネットワーク要件に不一致があると、新しいインスタンスの作成や既存インスタンスの使用ができない場合があります。 詳しくは、ネットワークの新規作成既存のネットワークの構成に関する記事をご覧ください。

Azure SQL Managed Instance でターゲットのサービス レベル (General Purpose または Business Critical) を選択する際のもう 1 つの重要な考慮事項は、Business Critical レベルでのみ利用できる特定の機能 (インメモリ OLTP など) を使用できるかどうかという点です。

代替手段 としての SQL Server VM

お客様のビジネスの要件によっては、Azure Virtual Machines 上の SQL Server の方が、Azure SQL Managed Instance よりも適切なターゲットである場合があります。

次のいずれかの条件がビジネスに当てはまる場合は、代わりに SQL Server 仮想マシン (VM) に移行することを検討してください。

  • サードパーティ製やカスタムのエージェントを SQL Server と同じ仮想マシンにインストールするためなど、オペレーティング システムやファイル システムへの直接アクセスが必要である。
  • FileStream や FileTable、PolyBase、クロスインスタンス トランザクションなど、まだサポートされていない機能に対して厳密な依存関係がある。
  • 特定バージョンの SQL Server (たとえば 2012 など) を維持する必要がある。
  • コンピューティング要件が、マネージド インスタンスで提供されているものよりはるかに低く (1 つの仮想コアなど)、データベース統合が許容可能な選択肢ではない。

移行ツール

次の移行ツールをお勧めします。

テクノロジ 説明
Azure Data Studio 用の Azure SQL Migration 拡張機能 Azure Database Migration Service を利用した Azure Data Studio の Azure SQL Migration 拡張機能は、移行の準備状況を把握するためのデータベース要件の評価、Azure リソースに対する適切なサイズの SKU の推奨事項の取得、SQL Server データベースの Azure への移行に役立ちます。 PowerShell と Azure CLI を使用して単一データベースまたは大規模に移行することができます。
Azure Migrate この Azure サービスは、VMware 上で大規模に SQL データ資産を検出して評価するのに役立ちます。 Azure SQL デプロイに関する推奨事項、ターゲットのサイズ設定、月単位の見積もりが提供されます。
ネイティブ バックアップと復元 SQL Managed Instance では、ネイティブ SQL Server データベースのバックアップ (.bak ファイル) の復元がサポートされています。 これは、Azure Storage にデータベースの完全バックアップを提供できるお客様にとって、最も簡単な移行オプションです。
ログ再生サービス このクラウド サービスは、SQL Server のログ配布テクノロジに基づいて SQL Managed Instance で有効になっています。 これは、データベースの完全、差分、およびログ バックアップを Azure Storage に提供できるお客様のための移行オプションです。 ログ再生サービスは、バックアップ ファイルを Azure Blob Storage から SQL Managed Instance に復元するために使用されます。
Managed Instance リンク この機能により、Always On テクノロジを使用した SQL Managed Instance へのオンライン移行が可能になります。 これは、移行が進行中のときも SQL Managed Instance のデータベースに R/O モードでアクセス可能にする必要があるお客様、長期間 (数週間または数か月の間) 移行を実行し続ける必要があるお客様、Business Critical サービス レベルへの真のオンライン レプリケーションを必要とするお客様、そして最もパフォーマンスの高い最小ダウンタイム移行を必要とするお客様にとっての移行オプションです。

次の表に、代替移行ツールを示します。

テクノロジ 説明
トランザクション レプリケーション トランザクションの一貫性を維持しながら、パブリッシャーとサブスクライバーの種類の移行オプションを提供することによって、ソース SQL Server データベース テーブルから SQL Managed Instance にデータをレプリケートします。
一括コピー 一括コピー プログラム (bcp) ツールでは、SQL Server のインスタンスからデータ ファイルにデータをコピーします。 このツールを使用して、ソースからデータをエクスポートし、ターゲット SQL Managed Instance にデータ ファイルをインポートします。

Azure SQL Managed Instance にデータを移動する高速一括コピー操作の場合、スマート一括コピー ツールを使用し、並列コピー タスクを利用して転送速度を最大化できます。
インポートおよびエクスポート ウィザードまたは BACPAC BACPAC は .bacpac 拡張子を持つ Windows ファイルで、データベースのスキーマとデータがカプセル化されています。 BACPAC を使用すると、SQL Server ソースからデータをエクスポートし、そのデータを Azure SQL Managed Instance にインポートできます。
Azure Data Factory Azure Data Factory のコピー アクティビティでは、組み込みコネクタと統合ランタイムを使用して、ソースの SQL Server データベースから SQL Managed Instance にデータが移行されます。

Data Factory では、SQL Server ソースから SQL Managed Instance にデータを移動するためのさまざまなコネクタがサポートされています。

移行オプションを比較する

移行オプションを比較して、ビジネス ニーズに合ったパスを選択します。

次の表では、推奨される移行オプションを比較しています。

移行オプション 使用する場合 考慮事項
Azure Data Studio 用の Azure SQL Migration 拡張機能 - 単一データベースまたは大規模な移行を行う。
- オンラインおよびオフラインモードの両方で実行することができる。

サポートされているソース:
- オンプレミス、または Azure Virtual Machines 上の SQL Server (2005 以降)
- Amazon EC2 上の SQL Server
- Amazon RDS for SQL Server
- Google Compute Engine 上の SQL Server
- 大規模な移行は、PowerShell または Azure CLI を使用して自動化できます。

- 移行が完了するまでの時間は、データベースのサイズとデータベース内のオブジェクトの数によって異なります。

- PowerShell または Azure CLI を使用していない場合は、Azure Data Studio が必要です。
ネイティブ バックアップと復元 - 個々の基幹業務アプリケーション データベースを移行する。
- 個別の移行サービスまたはツールを使用せずに素早く簡単に移行する。

サポートされるソース:
- オンプレミスまたは Azure VM の SQL Server (2005 - 2019)
- Amazon EC2
- GCP コンピューティングの SQL Server VM
- データベース バックアップでは、Azure Blob Storage へのデータ転送を最適化するために複数のスレッドが使用されますが、パートナー帯域幅とデータベース サイズが転送速度に影響する可能性があります。
- ダウンタイムには、完全バックアップと復元を実行するために必要な時間 (データ操作のサイズ) を考慮する必要があります。
ログ再生サービス - 個々の基幹業務アプリケーション データベースを移行する。
- データベース移行には、さらに多くのコントロールが必要になります。

サポートされるソース:
- オンプレミスまたは Azure VM の SQL Server (2008 - 2019)
- Amazon EC2
- Amazon RDS for SQL Server
- GCP コンピューティングの SQL Server VM
- 移行すると、SQL Server で完全なデータベース バックアップが行われ、Azure Blob Storage にバックアップ ファイルがコピーされます。 ログ再生サービスは、バックアップ ファイルを Azure Blob Storage から SQL Managed Instance に復元するために使用されます。
- 移行プロセス中に復元されるデータベースは復元中モードに入り、プロセスが完了するまでワークロードの読み取りや書き込みに使用できません。
Azure SQL Managed Instance のリンク機能 - 個々の基幹業務アプリケーション データベースを移行する。
- データベース移行には、さらに多くのコントロールが必要になります。
- 最小ダウンタイムの移行が必要です。

サポートされるソース:
- オンプレミスまたは Azure VM の SQL Server (2016 - 2019)
- Amazon EC2
- GCP コンピューティングの SQL Server VM
- 移行には、SQL Server と SQL Managed Instance の間にネットワーク接続を確立し、通信ポートを開く必要があります。
- Always On 可用性グループ テクノロジを使用してデータベースをほぼリアルタイムでレプリケートし、SQL Server データベースの正確なレプリカを SQL Managed Instance に作成します。
- 移行の進行中に、SQL Managed Instance でそのデータベースを読み取り専用アクセスに使用できます。
- 移行中、最小限のダウンタイムで最高のパフォーマンスを提供します。

次の表では、代替移行オプションを比較しています。

方法またはテクノロジ 使用する場合 考慮事項
トランザクション レプリケーション - ソース データベース テーブルからターゲット SQL Managed Instance データベース テーブルに変更を継続的にパブリッシュすることで移行する。
- データベースを完全に、または選択したテーブル (データベースのサブセット) について部分的に移行する。

サポートされるソース:
- SQL Server (2012 - 2019) (一部制限あり)
- Amazon EC2
- GCP コンピューティングの SQL Server VM

- セットアップは、他の移行オプションと比べて比較的複雑です。
- (データベースをオフラインにせずに) データを移行するための継続的レプリケーション オプションが提供されます。
- トランザクション レプリケーションには、ソース SQL Server インスタンスにパブリッシャーを設定するときに考慮すべき制限があります。 詳細については、「オブジェクトのパブリッシュに関する制限事項」を参照してください。
- レプリケーション アクティビティを監視する機能を利用できます。
一括コピー - 完全または部分的なデータ移行を実行する。
- ダウンタイムを許容できる。

サポートされるソース:
- オンプレミスまたは Azure VM の SQL Server (2005 - 2019)
- Amazon EC2
- Amazon RDS for SQL Server
- GCP コンピューティングの SQL Server VM
- データをソースからエクスポートするため、およびターゲットにインポートするためのダウンタイムが必要です。
- エクスポートまたはインポートで使用されるファイル形式とデータ型は、テーブル スキーマと一致している必要があります。
インポートおよびエクスポート ウィザードまたは BACPAC - 個々の基幹業務アプリケーション データベースを移行する。
- 比較的小規模なデータベースに適している。
個別の移行サービスやツールは必要ありません。

サポートされるソース:
- オンプレミスまたは Azure VM の SQL Server (2005 - 2019)
- Amazon EC2
- Amazon RDS
- GCP コンピューティングの SQL Server VM

- データをソースでエクスポートし、転送先でインポートする必要があるため、ダウンタイムが必要です。
- 切り捨てやデータ型不一致のエラーを回避するために、エクスポートまたはインポートで使用されるファイル形式とデータ型は、テーブル スキーマと一致している必要があります。
- 多数のオブジェクトを含むデータベースをエクスポートするために要する時間は、大幅に長くなる可能性があります。
Azure Data Factory - ソース SQL Server データベースからのデータの移行や変換を行う。
- 複数のデータ ソースのデータを Azure SQL Managed Instance にマージする (通常、ビジネス インテリジェンス (BI) ワークロードが対象)。
- ソースからターゲットにデータを移動するために、Data Factory でデータ移動パイプラインを作成する必要がある。
- コストが重要な考慮事項であり、パイプライン トリガー回数、アクティビティの実行数、データ移動の期間などの要因に応じて変わる。

機能の相互運用性

他の SQL Server 機能に依存するワークロードを移行する場合は、追加の考慮事項があります。

SQL Server Integration Services

Azure Database Migration Service を使用して、SSISDB の SQL Server Integration Services (SSIS) パッケージとプロジェクトを Azure SQL Managed Instance に移行します。

移行でサポートされるのは、SQL Server 2012 以降の SSISDB の SSIS パッケージのみです。 移行前に以前の SSIS パッケージを変換します。 詳細については、プロジェクト変換のチュートリアルに関する記事を参照してください。

SQL Server Reporting Services

SQL Server Reporting Services (SSRS) のレポートを、Power BI のページ分割されたレポートに移行できます。 レポートの準備と移行には、RDL Migration ツールが役立ちます。 Microsoft では、ユーザーがレポート定義言語 (RDL) レポートを SSRS サーバーから Power BI に移行できるようにするために、このツールを開発しました。 GitHub から入手でき、移行シナリオのエンドツーエンドのチュートリアルが付属しています。

SQL Server Analysis Services

SQL Server 2012 以降の SQL Server Analysis Services テーブル モデルは、Azure の Analysis Services テーブル モデルの PaaS (サービスとしてのプラットフォーム) デプロイ モデルである Azure Analysis Services に移行できます。 Azure Analysis Services へのオンプレミス モデルの移行について詳しくは、こちらのビデオ チュートリアルをご覧ください。

また、新しい XMLA の読み取りまたは書き込みエンドポイントを使用して Power BI Premium にオンプレミスの Analysis Services テーブル モデルを移行することもできます。

高可用性

SQL Server の高可用性機能である Always On フェールオーバー クラスター インスタンスと Always On 可用性グループは、ターゲットの SQL マネージド インスタンスでは使用されなくなりました。 高可用性アーキテクチャは、SQL Managed Instance の General Purpose (Standard 可用性モデル)Business Critical (Premium 可用性モデル) サービス レベルの両方に既に組み込まれています。 また、Premium 可用性モデルでは、読み取り専用の目的で、セカンダリ ノードのいずれかに接続できる読み取りスケールアウトも提供されます。

SQL Managed Instance に含まれる高可用性アーキテクチャに加えて、フェールオーバー グループ機能もあります。これを使用すると、マネージド インスタンス内のデータベースの別リージョンへのレプリケーションとフェールオーバーを管理できます。

SQL Agent ジョブ

Azure Database Migration Service のオフライン オプションを使用して SQL Agent ジョブを移行します。 これを行わない場合、SQL Server Management Studio を使用して Transact-SQL (T-SQL) でジョブをスクリプト化し、その後、ターゲット SQL Managed Instance でそれらを手動で再作成します。

重要

現在、Azure Database Migration Service では、T-SQL サブシステム ステップを使用するジョブのみがサポートされています。 SSIS パッケージのステップを使用するジョブは、手動で移行する必要があります。

ログインとグループ

SQL ログインは、オフライン モードで Database Migration Service を使用して、SQL Server ソースから Azure SQL Managed Instance に移動します。 移行ウィザードの [ログインの選択] ペインを使用して、ログインをターゲット SQL Managed Instance に移行します。

既定では Azure Database Migration Service でサポートされているのは、SQL ログインの移行のみです。 ただし、次の方法で Windows ログインの移行を有効にできます。

  • ターゲット SQL Managed Instance に Microsoft Entra ID (旧 Azure Active Directory) の読み取りアクセス権があることを確認します。 全体管理者の役割を持つユーザーは、Azure portal を使用してそのアクセス権を構成できます。
  • Windows ユーザーまたはグループのログインの移行を有効にするように Azure Database Migration Service を構成します。 これは、Azure portal の [構成] ページで設定します。 この設定を有効にしたら、サービスを再起動して変更を有効にします。

サービスを再起動すると、Windows ユーザーまたはグループのログインが、移行可能なログインの一覧に表示されます。 移行する Windows ユーザーまたはグループのログインについて、関連付けられているドメイン名を指定するように求められます。 サービス ユーザー アカウント (ドメイン名 NT AUTHORITY を含むアカウント) と仮想ユーザー アカウント (ドメイン名 NT SERVICE を含むアカウント) はサポートされていません。 詳細については、T-SQL を使用して SQL Server インスタンスの Windows ユーザーとグループを Azure SQL Managed Instance に移行する方法に関する記事を参照してください。

または、Microsoft データ移行アーキテクトが特別に設計した PowerShell ユーティリティを使用できます。 このユーティリティでは、ログインを再作成し、ソースからターゲットへのデータベース ユーザーを選択するために、PowerShell を使用して T-SQL スクリプトが作成されます。

PowerShell ユーティリティでは、Windows Server Active Directory アカウントが Microsoft Entra アカウントに自動的にマップされ、ソースの Active Directory インスタンスに対してログインごとに UPN 参照を実行できます。 このユーティリティでは、ロール メンバーシップおよびユーザー アクセス許可と共に、カスタム サーバーとデータベース ロールのスクリプトが作成されます。 包含データベースはまだサポートされていません。使用できる SQL Server アクセス許可のサブセットのみがスクリプト化されます。

暗号化

ネイティブ復元オプションを使用して、Transparent Data Encryption によって保護されているデータベースをマネージド インスタンスに移行する場合は、データベースの復元 "前" に、ソース SQL Server インスタンスからターゲット SQL マネージド インスタンスに対応する証明書を移行します

システム データベース

システム データベースの復元はサポートされていません。 (master または msdb のデータベースに格納されている) インスタンス レベルのオブジェクトを移行するには、T-SQL を使用してそれらをスクリプト化してから、ターゲット マネージド インスタンス上にそれらを再作成します。

インメモリ OLTP (メモリ最適化テーブル)

SQL Server には、インメモリ OLTP 機能が用意されています。 これを使用すると、メモリ最適化テーブル、メモリ最適化テーブル型、ネイティブにコンパイルされた SQL モジュールを使用して、高いスループットと短い待機時間というトランザクション処理要件があるワークロードを実行できます。

重要

インメモリ OLTP は、Azure SQL Managed Instance の Business Critical レベルでのみサポートされています。 General Purpose レベルではサポートされていません。

オンプレミスの SQL Server インスタンスにメモリ最適化テーブルまたはメモリ最適化テーブル型がある場合、Azure SQL Managed Instance に移行する際には、次のいずれかを行う必要があります。

  • インメモリ OLTP がサポートされているターゲット SQL Managed Instance の Business Critical レベルを選択します。

  • Azure SQL Managed Instance の General Purpose レベルに移行する場合は、データベースを移行する前に、メモリ最適化テーブル、メモリ最適化テーブル型、およびメモリ最適化オブジェクトと対話するネイティブにコンパイルされた SQL モジュールを削除します。 次の T-SQL クエリを使用すると、General Purpose レベルに移行する前に削除する必要があるすべてのオブジェクトを識別できます。

    SELECT * FROM sys.tables WHERE is_memory_optimized=1
    SELECT * FROM sys.table_types WHERE is_memory_optimized=1
    SELECT * FROM sys.sql_modules WHERE uses_native_compilation=1
    

インメモリ テクノロジの詳細については、「Azure SQL Managed Instance でインメモリ テクノロジを使用してパフォーマンスを最適化する」を参照してください。

高度な機能

SQL Managed Instance に含まれているクラウドベースの高度な機能を活用してください。 たとえば、バックアップの管理はサービスによって行われるため、もうそれについて心配する必要はありません。 保持期間内の任意の特定の時点に復元できます。 さらに、高可用性は組み込まれているため、高可用性の設定について心配する必要もありません。

セキュリティを強化するために、Microsoft Entra 認証監査脅威の検出行レベル セキュリティ動的データ マスクの使用を検討してください。

高度な管理とセキュリティの機能に加えて、SQL Managed Instance ではワークロードの監視とチューニングに役立つ高度なツールが提供されています。 Azure SQL Analytics を使用すると、多数のマネージド インスタンスを一元的な方法で監視できます。 マネージド インスタンスの自動チューニングでは、SQL プランの実行のパフォーマンスが継続的に監視されて、識別されたパフォーマンスの問題が自動的に修正されます。

一部の機能は、データベース互換レベルを最新の互換性レベル (150) に変更すると使用できるようになります。

移行資産

さらに支援が必要な場合は、実際の移行プロジェクトのために開発された次のリソースを参照してください。

Asset 説明
データ ワークロード評価モデルとツール このツールを使用すると、ワークロードに対して、推奨される "最適な" ターゲット プラットフォーム、クラウドの対応性、アプリケーションとデータベースの修復レベルがわかります。 シンプルなワンクリックの計算とレポート生成機能があり、自動化された均一なターゲット プラットフォームの決定プロセスが用意されているので、大規模な資産評価を迅速に行うことができます。
オンプレミスの SQL Server ログインを Azure SQL Managed Instance に移動するユーティリティ PowerShell スクリプトでは、ログインを再作成し、オンプレミスの SQL Server から Azure SQL Managed Instance にデータベース ユーザーを選択するための T-SQL コマンド スクリプトを作成できます。 このツールを使用すると、Windows Server Active Directory アカウントを Microsoft Entra アカウントに自動的にマッピングできるだけでなく、必要に応じて SQL Server のネイティブ ログインを移行することもできます。
Logman を使用した Perfmon データ収集の自動化 Logman ツールを使用すると、Perfmon データを収集し (ベースライン パフォーマンスの把握に役立てるため)、移行ターゲットの推奨事項を取得できます。 このツールでは、logman.exe を使用して、リモート SQL Server インスタンスに設定されたパフォーマンス カウンターを作成、開始、停止、削除するコマンドを作成します。

データ SQL エンジニアリング チームが、これらのリソースを開発しました。 このチームの主要な作業は、Microsoft の Azure データ プラットフォームへのデータ プラットフォーム移行プロジェクトの複雑な近代化を容易にし、迅速に進めることです。

次のステップ