SQL ServerからFabric Data Warehouseへの移行方法

適用対象:✅ Warehouse in Microsoft Fabric

この記事では、SQL ServerからMicrosoft Fabric Data Warehouseへのデータウェアハウスの移行方法について説明します。

ヒント

戦略と計画の詳細については、『Migration planning: SQL Server to Fabric Data Warehouse』をご覧ください。

Fabric Migration Assistant for Data Warehouseを使い、SQL Serverからの自動移行体験を活用しましょう。 この記事の残りの部分では、より手動の移行手順について説明します。

以下の表は、データスキーマ(DDL)、データベースコード(DML)、およびデータの移行方法をまとめたものです。 各選択肢はこの記事の後半で説明します。

Option Method それが何をするか スキルか好みか Scenario
1 データファクトリー スキーマ変換
データ抽出
データ インジェスト
データファクトリーパイプライン スキーマとデータ移行の簡素化。 ディメンション テーブル に推奨されます。
2 パーティション分割付きデータファクトリー スキーマ変換
データ抽出
データ インジェスト
データファクトリーパイプライン 大規模な ファクトテーブル向けの並列移行。
3 スキーマ優先移行 スキーマ変換 データファクトリーパイプライン まずスキーマを移行し、その後データを別々に抽出・取り込みすることでスループットの制御が強化されます。
4 SQL移行スクリプト スキーマ変換
データ抽出
コード評価
T-SQL 移行作業の細かい制御にはIDEとスクリプトを使いましょう。
5 SQL データベース プロジェクト スキーマ変換
コード評価
SQLプロジェクト ソース管理、評価、デプロイにはデータベースプロジェクトを活用しましょう。
6 dbt スキーマ変換
データベースコード変換
dbt 既存のDBTプロジェクトを再利用するには、アダプターとターゲットの設定を変更します。

最初に移行するワークロードを選択する

SQL ServerからFabric Data Warehouse移行プロジェクトをどこから始めるか決めたら、以下の作業範囲を選んでください:

  • 新しい環境の利点を迅速に提供することで、Fabric Data Warehouseへの移行の実現可能性を証明しましょう。 小さくシンプルに始めて、複数の小さな移動に備えましょう。
  • 技術スタッフが他のワークロードを移行するために使うプロセスやツールについての経験を積む時間を与えましょう。
  • SQL Server環境、ツール、プロセスに特化したさらなる移行用のテンプレートを作成しましょう。

ヒント

移行が必要なオブジェクトのインベントリを作成し、移行プロセスを最初から終了まで記録して、他のデータベースやワークロードでも繰り返し行えるようにしましょう。

初期の移行におけるデータ量は、Fabric Data Warehouseの能力と利点を示すのに十分な量でありつつ、価値を迅速に示すには十分小さい必要があります。 1 から 10 テラバイトの範囲のサイズが一般的です。

Fabric Data Factoryでの移行

Fabric Data Factoryは、テーブルのDDL変換やSQL Serverからのデータの移行を行うローコードインターフェースを提供します。

Fabric Data Factory では、次のタスクを実行できます。

  • スキーマ(DDL)をFabric Data Warehouse構文に変換します。
  • Fabric Data Warehouseでスキーマオブジェクトを作成します。
  • データをFabric Data Warehouseに移行してください。

オプション 1. Copy assistantによるスキーマとデータ移行

この方法はData Factory Copy Assistantを使ってソースSQL Serverデータベースに接続し、テーブルDDLをFabric構文に変換し、データをFabric Data Warehouseにコピーします。 1つ以上のソーステーブルを選択できます。 生成されたパイプラインはForEachアクティビティを使って選択されたテーブルを並列にコピーします。

コピー操作を設定する際:

  • ソース接続にはSQL Serverコネクターを使ってください。
  • 並列コピーは、ソースデータベースとネットワークが維持できるレベルに制限してください。
  • 抽出時のソースCPU、I/O、トランザクションログの使用、そして本番ワークロードの遅延を監視してください。

Copy Assistantを使って、DDLを変換し、選択したテーブルを一度に取り込むシンプルなインターフェースを用意してください。 この方法は寸法表や小規模な作業に適しています。

大きなテーブルの場合は、分割を使って読み書きの並列性を高めましょう。

オプション 2。 パーティショニングによるデータ移行

大きなファクトテーブルの場合は、各テーブルごとにCopy アクティビティを使用し、ソースのパーティショニングを設定しましょう。 利用可能な場合は物理パーティションを使用し、適切な数値または日付列とその最小・最大値を指定してダイナミックレンジ分割を設定しましょう。

ダイナミックレンジのパーティション設定があるパイプラインソースのスクリーンショットです。

パーティションを使う場合:

  • 行を均等に分配する分割列を選びます。
  • SQL Serverが本番ワークロードに影響を与えずに処理できる以上の同時送信クエリを作成するのは避けましょう。
  • パーティション範囲とパラレルコピー設定を代表的なワークロードと比較してテストしてください。
  • 送信元と目的地を監視しながら、並列性を徐々に増やしましょう。

並列抽出でスループットを向上させる場合、大規模なファクトテーブルにはData Factoryのパーティショニングを活用してください。 バッチ数やパーティション範囲は、ソースデータベースのリソースやネットワーク容量に応じて調整しましょう。

オプション 3。 スキーマ優先移行

大規模なデータベースでは、スキーマ移行とデータ移行を分けてください:

  1. Fabric Data Warehouseでテーブルスキーマを変換・作成してください。
  2. ソース データを Azure Data Lake Storage (ADLS) Gen2 に抽出します。
  3. 段階化されたデータをFabric Data Warehouseに取り込むにはData FactoryまたはCOPY INTOコマンドを使用します。

これらの相を分けることで、抽出と摂取を独立して調整できます。

データファクトリーによるスキーマ移行

Fabricパイプラインを使って、行をコピーせずにテーブルスキーマをSQL ServerからFabric Data Warehouseに移行できます。

Fabric Data Factoryからのスクリーンショットで、DDLを移行するForEachアクティビティに接続されたLookupアクティビティが示されています。

パイプラインパラメータの設定

どのスキーマを移行するかを指定する SchemaName パラメータを作成します。 デフォルトとして dbo を使うか、 'dbo','sales'のようなカンマ区切られたリストを入力してください。

Data Factoryのスクリーンショットで、SchemaNameパイプラインパラメータが示されています。

Lookupアクティビティの設定

Lookupアクティビティを作成し、その接続を元のSQL Serverデータベースに設定します。 [設定] タブで、次のようにします。

  • "データ ストアの種類" を [外部] に設定します。
  • ソースのSQL Server接続を選択します。
  • Use query を Query に設定します。
  • ソーススキーマとテーブル名を返す動的なクエリを追加します。

クエリを作成するには次の式を用いてください:

@concat('
SELECT s.name AS SchemaName,
t.name AS TableName
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
ON t.type = ''U''
AND s.schema_id = t.schema_id
AND s.name in (',coalesce(pipeline().parameters.SchemaName, 'dbo'),')
')

Data Factoryのスクリーンショットで、Lookupアクティビティでの動的クエリが示されています。

ForEachアクティビティの設定

ForEachアクティビティ の設定タブでは :

  • Sequential を無効にすると、反復処理を並行して実行できるようになります。
  • バッチ カウント を元のデータベースが維持できる値に設定します。 まずは保守的な値から始めてテストしてください。
  • アイテムを@activity('Get List of Source Objects').output.valueに設定する。

ForEachアクティビティの設定を示すスクリーンショットです。

Copy アクティビティの設定

ForEachアクティビティ内でCopy アクティビティを追加してください。 [ソース] タブで:

  • "データ ストアの種類" を [外部] に設定します。
  • ソースのSQL Server接続を選択します。
  • クエリを使用 を クエリ に設定します。
  • クエリを@concat('SELECT TOP 0 * FROM ',item().SchemaName,'.',item().TableName)に設定し、テーブルのメタデータのみを移行させます。

Data Factoryからのスクリーンショットで、Copy アクティビティのソース設定を示しています。

[送信先] タブで、次の手順を実行します。

  • "データ ストアの種類" を [ワークスペース] に設定します。
  • ワークスペースのデータストアタイプをData Warehouseに設定し、宛先ウェアハウスを選択します。
  • 宛先スキーマを @item().SchemaNameに設定してください。
  • 宛先テーブルを @item().TableNameに設定します。

Data Factoryのスクリーンショットで、Copy アクティビティの宛先設定を示しています。

パイプラインを実行した後、Fabric Data Warehouseに期待されるスキーマ付きの各選択テーブルが含まれているか確認してください。

SQLスクリプトによる移行

スキーマ変換、データ抽出、コード評価を細かく制御したいときは、T-SQLやPowerShellの移行スクリプトを使いましょう。

移行スクリプトは以下のことができます:

  • スキーマ(DDL)をFabric Data Warehouse構文に変換します。
  • Fabric Data Warehouseでスキーマオブジェクトを作成します。
  • SQL ServerからADLS Gen2へデータを抽出します。
  • ストアドプロシージャ、関数、ビューでサポートされていないT-SQL構文にフラグを立てます。

Microsoft Fabric CATチームは、ファブリック移行リポジトリで移行コードサンプルを提供しています。

T-SQLに慣れていて、統合開発環境を好み、個別の移行作業を管理したい場合にスクリプトを使いましょう。 COPY INTOやData Factoryを使って抽出したデータをFabric Data Warehouseに取り込みます。

SQL データベース プロジェクトを使用して移行する

Fabric Data WarehouseはSQL Database Projects forVisual Studio Code拡張機能でサポートされています。

SQLデータベースプロジェクトは、ソース管理、データベーステスト、スキーマ検証、デプロイ機能を提供します。 次のことが可能です。

  • スキーマ(DDL)をFabric Data Warehouse構文に変換します。
  • Fabric Data Warehouseでスキーマオブジェクトを作成します。
  • ストアドプロシージャ、関数、ビューにおけるサポートされていないT-SQL構文を評価します。

データ移行の場合は、Data Factoryを使ってSQL Serverから直接コピーするか、ADLS Gen2にデータを抽出してCOPY INTOやData Factoryで取り込みます。

遷移スクリプトを用いたSQLデータベースプロジェクトの使い方のウォークスルーについては、 fabric-migrationリポジトリをご覧ください。

詳細については、SQL Database Projects 拡張機能の使用を開始するおよびコマンド ラインからデータベース プロジェクトをビルドするを参照してください。

DBTによる移行

もしSQL Server data warehouseがdbtを使っているなら、dbt adapter for Fabric Data Warehouseを使ってターゲットプロファイルとアダプターを変更してスキーマやデータベースコードを変換できます。

dbtフレームワークはモデルファイルからDDLおよびDMLスクリプトを生成します。 データは別途、Data Factoryまたはこの記事内の他のデータ移行オプションを使用してください。

開始するには、チュートリアル: Fabric Data Warehouse 用に dbt を設定するをご覧ください。

Fabric Data Warehouseへのデータインジェスト

段階化されたデータの場合は、COPY INTOまたはデータファクトリー Fabricを使ってADLS Gen2からFabric Data Warehouseにファイルを取り込みます。 以下のガイダンスを考慮してください:

  • ソースデータベースとネットワークに十分な容量がある場合、大規模テーブルを並列に抽出します。
  • ストレージやネットワーク使用を削減し、インジェスト効率を向上させるためにParquetファイルを優先してください。
  • Fabricの容量がワークロードを支えられるときに複数の宛先テーブルを同時に読み込みましょう。
  • ソース抽出とFabricの容量の両方を監視し、最適な並列度を見つけてください。