Visual Studio Codeでの倉庫プロジェクトの開発

適用対象:✅ Warehouse in Microsoft Fabric

Visual Studio Codeで Fabric Data Warehouse用のデータベース プロジェクトを設定する方法について説明します。 新しいプロジェクトを作成し、スキーマオブジェクトを定義し、プロジェクトをビルド・検証し、倉庫に公開します。

Important

この機能は プレビュー段階です。

[前提条件]

開始する前に、次のことを確認してください。

  • 共同作成者以上のアクセス許可を持つ Fabric ワークスペース内の既存の Warehouse アイテムにアクセスできます。
    • 新しいサンプル ウェアハウスを作成するには、「 Microsoft Fabricを参照してください。
  • ワークステーションにVisual Studio Codeをインストールします。
  • .NET SDK をインストールして、データベース プロジェクトをビルドして発行します。
  • SQL データベース プロジェクト と SQL Server (mssql) の 2 つのVisual Studio Code拡張機能をインストールします。
    • 必要な拡張機能は、"SQL Database Projects" または "SQL Server (mssql)" を検索することで、Visual Studio Code マーケットプレース内から直接インストールできます。

新しいデータベース プロジェクトを作成する

データベースプロジェクトはゼロから作成することも、既存のウェアハウスから作成することも可能です。

オプション 1: Visual Studio Codeのコマンド パレットから新しいデータベース プロジェクトを作成する

  1. Visual Studio Code を開きます。

  2. コマンド パレットを開きます (Mac のCtrl+Shift+PまたはCmd+Shift+P)。

  3. データベース プロジェクトの検索: 新規。

  4. Database プロジェクトの種類を SQL Server Database として選択します。

  5. プロジェクト名を選択し、ローカル フォルダーの場所を選択します。

  6. ターゲット プラットフォームとして Synapse Data Warehouse Microsoft Fabric を選択します。

  7. メッセージが表示されたら、SDK スタイルのプロジェクトに対して [はい] (推奨) を選択します。

    Important

    Fabric Data Warehouseでは、SDK スタイル プロジェクトのみがサポートされます。

  8. 質問に対して [ はい ] を選択 します。このフォルダーの既定のビルド構成として SQL プロジェクトビルドを構成しますか?

  9. このフォルダー内のファイルの作成者を信頼するには、[ はい ] を選択します。

オプション 2: データベース プロジェクト拡張機能から新しいデータベース プロジェクトを作成する

  1. Visual Studio Codeで、Activity Bar から Database Projects 拡張機能アイコンを選択します。

  2. [ データベース プロジェクト ] ウィンドウで、[ 新規作成] を選択します。

    データベース プロジェクト拡張機能ウィンドウと [新しい作成] ボタンを示すVisual Studio Codeからのスクリーンショット。

  3. Database プロジェクトの種類を SQL Server Database として選択します。

  4. プロジェクト名を選択し、ローカル フォルダーの場所を選択します。

  5. ターゲット プラットフォームとして Synapse Data Warehouse Microsoft Fabric を選択します。

  6. メッセージが表示されたら、SDK スタイルのプロジェクトに対して [はい] (推奨) を選択します。 Fabric Data Warehouseでは、SDK スタイル プロジェクトのみがサポートされます。

  7. 質問に対して [ はい ] を選択 します。このフォルダーの既定のビルド構成として SQL プロジェクトビルドを構成しますか?

  8. このフォルダー内のファイルの作成者を信頼するには、[ はい ] を選択します。

オプション 3: 既存のウェアハウスからデータベース プロジェクトを作成する

  1. まず、Visual Studio Codeでウェアハウスの新しい接続プロファイルを作成します。

    1. Activity Bar から、Visual Studio Codeの SQL Server 拡張機能を選択します。
    2. プロファイル名を指定します。 [パラメーター] を選択します。
    3. サーバー 名を入力してください。 Fabricポータルのウェアハウス設定で、SQL 接続文字列を選択し、提供された文字列をコピーします。 この文字列はウェアハウスのサーバー名であり、SQL分析エンドポイントとは異なります。 <server unique ID>.datawarehouse.fabric.microsoft.com のように表示されます。
    4. 認証の種類の場合は、Microsoft Entra ID - MFA サポート付きユニバーサルを使用します。 Microsoft Entra IDで認証します。
    5. その他の情報をデフォルトまたは希望として提供し、「 接続」を選択します。
  2. Visual Studio Codeで、アクティビティ バーから Database Projects 拡張機能アイコンを選択します。

  3. [...] ウィンドウからオプション ボタンを選択し、[データベースからプロジェクトを作成] オプションを選択します。

    データベースからのプロジェクトの作成オプションを示すVisual Studio Codeからのスクリーンショット。

  4. 既存の接続プロファイルから倉庫を選択してください。

  5. プロジェクト名を入力し、ワークステーションのプロジェクトフォルダを選択します。

  6. フォルダー構造の場合は、 スキーマ/オブジェクトの種類 (推奨) を選択します。

  7. [ プロジェクトにアクセス許可を含める] で、[ いいえ ] (既定) を選択します。

  8. SDK スタイルのプロジェクトの場合は、[ はい (推奨)] を選択します。

  9. 質問に対して [ はい ] を選択 します。このフォルダーの既定のビルド構成として SQL プロジェクトビルドを構成しますか?

  10. Visual Studio Codeは、ウェアハウス プロジェクトからプロジェクト ファイルを抽出します。

    プロジェクト ファイルの抽出の進行状況の通知を示すVisual Studio Codeからのスクリーンショット

  11. 抽出が成功すると、次のような通知が表示されます:「プロジェクトファイルの抽出:成功しました。 完了" という情報が表示されます。

  12. このフォルダー内のファイルの作成者を信頼するには、[ はい ] を選択します。

ウェアハウスの新しいデータベース プロジェクト

ウェアハウスの新しいデータベース プロジェクトが [SQL Database プロジェクト] メニューに表示されます。

Visual Studio Codeからのスクリーンショットは、AdventureWorksDW2022の新しいデータベースプロジェクトを示しています。

プロジェクト構造は次のようになります。

 | Project Name
 ├── Database References
 ├── SQLCMD Variables
 ├── .vscode/
 └── schema/
     ├── Functions
     ├── Tables
     └── Views

データベース プロジェクトを構成する

  1. プロジェクトを右クリックし、[ .sqlproj ファイルの編集] を選択します。

    データベース プロジェクトのVisual Studio Codeとコンテキスト メニューからのスクリーンショット。[sqlproj ファイルの編集] オプションが強調表示されています。

  2. ファイルに最新バージョンのMicrosoft.Build.Sql SDKが含まれていることを確認してください。 例えば、Microsoft.Build.Sqlファイルの2.3.0のバージョンを.sqlprojに変更するなどです。

       <Sdk Name="Microsoft.Build.Sql" Version="2.3.0" />
    
  3. 最新バージョンの Microsoft.SqlServer.Dacpacs.FabricDw を確認し、 Project/ItemGroup XML ノード内に参照を追加します。 例えば次が挙げられます。

       <PackageReference Include="Microsoft.SqlServer.Dacpacs.FabricDw" Version="170.0.4">
           <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
           <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
       </PackageReference>
    

    Important

    DatabaseVariableLiteralValueメタデータなしでパッケージ参照を追加するとプロジェクトの構築は成功しますが、sqlpackagePublishやScriptアクションは、コードがsysスキーマ内のオブジェクトを参照した時点で失敗することがあります。例えばsys.views。 その場合、次のようなエラーが見られます:

    Error SQL72033: This deployment may encounter errors during execution because [<schema>].[<procedure>] depends on [sys].[views].[schema_id] and [sys].[views].[schema_id] does not exist in the target database.

    これは、更新後のウェアハウスのデータベース プロジェクトの外観です。

     <?xml version="1.0" encoding="utf-8"?>
     <Project DefaultTargets="Build">
       <Sdk Name="Microsoft.Build.Sql" Version="2.3.0" />
       <PropertyGroup>
         <Name>DatabaseProject715wh</Name>
         <ProjectGuid>{2E278BCC-F118-4DDB-9255-94697F2930B4}</ProjectGuid>
         <DSP>Microsoft.Data.Tools.Schema.Sql.SqlDwUnifiedDatabaseSchemaProvider</DSP>
         <ModelCollation>1033, CI</ModelCollation>
       </PropertyGroup>
       <ItemGroup>
         <None Include=".vscode\tasks.json" />
         <PackageReference Include="Microsoft.SqlServer.Dacpacs.FabricDw" Version="170.0.4">
           <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
           <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
         </PackageReference>
       </ItemGroup>
       <Target Name="BeforeBuild">
         <Delete Files="$(BaseIntermediateOutputPath)\project.assets.json" />
       </Target>
     </Project>
    
  4. .sqlproj ファイルを保存します。 データベース プロジェクトの再読み込みを求めるプロンプトで、[ はい] を選択します。

Important

Fabric Data Warehouse チームは、NuGet パッケージの新しいバージョンを頻繁にリリースします。 .sqlprojファイルのデフォルトバージョン値は時間とともに変わることがあるため、ローカルプロジェクトでNuGetの最新バージョンと整合するように更新してくださいMicrosoft。SqlServer.Dacpacs.FabricDw。

データベース オブジェクトを追加または更新する

ウェアハウス プロジェクト内でテーブル、ビュー、ストアド プロシージャ、関数などのデータベース オブジェクトを定義または変更できます。

スキーマのフォルダーの下 ( dboなど) で、ウェアハウス内のオブジェクトの T-SQL 定義を追加または削除または変更します。 既存のオブジェクトを変更するには、対応する .sql ファイルを開き、必要に応じて定義を更新します。

プロジェクトをビルドすると、新しいオブジェクトと更新されたすべてのオブジェクトが検証され、生成された dacpac ファイル {project folder location}/bin/debug/{project name}.dacpac ファイルに含まれます。

ここで行った変更はデータベース プロジェクトにのみ反映され、プロジェクトを<>BuildおよびPublishするまで、Microsoft Fabricには反映されません。

プロジェクトをビルドして検証する

  1. もしまだ開いていないデータベースプロジェクトを開いてください。

  2. プロジェクトを右クリックして「 ビルド 」を選択してデータベースプロジェクトを構築します。

    データベース プロジェクトをビルドするオプションを示すVisual Studio Codeからのスクリーンショット。

  3. ビルドは成功するはずです。 ビルドイベントの出力に提示されたメッセージに基づいて誤りを修正してください。

注

現在、Visual Studio CodeのデフォルトターミナルはDatabase Projects拡張機能のビルドプロセスが成功するためにPowerShellでなければなりません。 コマンドパレットで「ターミナル」→「デフォルトプロファイルを選択し、その後PowerShellを選択します」とします。

Fabric Data Warehouseに発行する

プロジェクトをビルドした後、ターゲット ウェアハウスに発行します。 発行により、データベース プロジェクトと実際のウェアハウスの違いを解決するスクリプトが作成され、そのウェアハウスがプロジェクトと一致するようにスクリプトが実行されます。 .dacpacファイル内のウェアハウススキーマのコンパイルモデルをターゲットウェアハウスにデプロイできます。

  1. プロジェクトを右クリックし、[発行] を選択 します。

  2. [ 既存の SQL サーバーに発行] を選択します。

  3. 「発行プロファイルを読み込む」を選択で、初めて発行するときは「プロファイルを使用しない」を選択します。

    • 倉庫を公開するオプションを公開 プロファイルに保存してください。 Visual Studio Codeの通知で、使用した公開オプションを公開プロファイルファイルに保存するオプションが表示されます。
    • プロジェクトを倉庫に公開する際には、その公開プロファイルを再利用してください。 異なるウェアハウス、または開発/テスト/受け入れ/運用環境の開発環境で異なる環境に対して、異なるプロファイル オプションが用意されている場合があります。
  4. 一覧からファブリック Data Warehouse接続プロファイルを選択します。

  5. ターゲット ウェアハウスの名前を選択します。

  6. [ アクションの選択 ] オプションでは、 スクリプトを生成 して発行前にスクリプトを確認するか、プロジェクトをウェアハウスに発行することができます。 - 変更を初めてデプロイしたいときは、慎重に スクリプトを生成 し、その結果のT-SQLを対象ウェアハウスに適用するためにレビューしてください。 スクリプトの生成はターゲットウェアハウスに変更を加えません。

    • 「 公開」を選択すると、プロセスはターゲットウェアハウスに変更を書き込みます。

    Visual Studio Codeからのスクリーンショット: 「dacpac の展開: 処理中通知」を示しています。

  7. 通知で、 設定をプロファイル (.publish.xml) に保存しますか? を選択し、[ はい ] を選択し、次回発行する必要がある場合は発行プロファイルの選択肢を保存します。

ウェアハウス プロジェクトの重要な展開設定

データベースプロジェクトをFabric Data Warehouseにデプロイすると、いくつかの設定がスキーマの変更を制御し、データの安全性に影響を与えることがあります。 注意して使用してください。

  • BlockOnPossibleDataLoss

    • 実行内容: データ損失のリスクがある場合 (たとえば、データを含む列またはテーブルを削除する) 場合にデプロイを防止します。
    • 勧告: 重要なデータを保護するには、常に運用環境で True に設定します。
    • 注意:Falseに設定すると、データが失われる可能性がある場合でもデプロイが可能になります。 制御された環境 (開発/テストなど) でのみ使用します。
  • DropObjectsNotInSource

    • 実行内容: プロジェクト ソースに 存在しない ターゲット データベース内のオブジェクトを削除します。
    • 勧告: 開発/テスト環境で使用して、残ったオブジェクトをクリーンアップします。
    • 注意: 運用環境で DropObjectsNotInSource を使用すると、 重要なオブジェクトとデータを削除できます。 有効にする前に再確認します。
  • PreDeploy デプロイ前スクリプトの場合

    • 目的
      • スキーマ展開 前に カスタムSQLスクリプトを実行します。
    • 一般的な用途
      • テーブルを削除する前にデータをアーカイブまたはバックアップする
      • 制約またはトリガーを一時的に無効にする
      • レガシーオブジェクトの整理
    • 注意
      • スクリプトが 冪等性 であり、デプロイと矛盾するスキーマ変更を導入しないようにしてください。

Tip

デプロイメントプロセスやクエリが 冪等性の場合、コマンドを複数回実行しても論理的な問題や失敗を起こさずに済みます。 冪等命令は、複数のデータベースに展開できるように、ステータスを事前に決める必要がないように書かれています。

  • PostDeploy デプロイ後スクリプト用

    • 実行内容: スキーマのデプロイ 後 にカスタム SQL スクリプトを実行します。
    • 一般的な用途:
      • シード検索または参照データ
      • 制約またはトリガーを再度有効にする
      • ログのデプロイ履歴
    • 注意: 本番環境で大規模なテーブルでの重い操作は避けてください。 必要に応じてスクリプトが安全に複数回実行できるようにしましょう。

Important

発行する前に、デプロイ スクリプトと設定を常に確認してください。 意図しないデータ損失を防ぐために、まず開発環境またはテスト環境でテストします。 詳細と例については、Fabric Data Warehouseのデプロイ前と配置後のスクリプトに関する記事を参照してください。

公開を確認

ウェアハウスに接続して変更されたオブジェクトをスクリプト化するか、システム カタログ オブジェクトを実行して検証してください。