次の方法で共有


Microsoft Fabric SQL データベースの SqlPackage

適用対象:✅ Microsoft Fabric SQL データベース

このチュートリアルでは、Fabric SQL データベースで SqlPackage を操作する方法について説明します。

SqlPackage は、"データベースの移植性" と "データベースのデプロイ" の機能を備える CLI です。

  • Azure または Fabric で管理されているデータベースの移植性 (インポート/エクスポート) により、後で移行する必要がある他のプラットフォームにデータを移植できます。 - 移植性には、自己完結型データベース コピー (.bacpac または .dacpac ファイル) を介して、Fabric の SQL Server、Azure SQL Database、Azure SQL Managed Instance、および SQL データベースとの間の移動が含まれます。

また、SqlPackage を使用すると、データベース オブジェクトへの増分変更 (テーブル内の新しい列、既存のストアド プロシージャへの変更など) を簡単にデータベースにデプロイできます。

  • SqlPackage では、データベース内のオブジェクトの定義を含む .dacpac ファイルを抽出し、.dacpac ファイルを発行して、そのオブジェクトの状態を新規または既存のデータベースに適用できます。
  • この発行操作は、SQL プロジェクトとも統合されます。これにより、SQL データベースの開発サイクルがオフラインで可能になり、より動的になります。

前提条件

セットアップ

SqlPackage は、Windows、macOS、Linux で Dotnet ツールとして使用できます。 これは次のコマンドを使用してインストールできます。

dotnet tool install --global Microsoft.SqlPackage

SqlPackage はグローバルな Dotnet ツールなので、ターミナルで任意のフォルダーから sqlpackage と入力して使用できます。

SqlPackage を使用してデータベースをインポートする

.bacpac はデータベースの移植可能なコピーであり、一部の移行やテストのシナリオで役立ちます。 その を空の SQL データベースに.bacpacできます。

.bacpacは、バックアップまたはバックアップ/復元機能の代わりではありません。 Fabric での SQL データベースのバックアップの詳細については、「 Microsoft Fabric の SQL データベースでの自動バックアップ」および「Microsoft FabricSQL データベースのバックアップからの復元」を参照してください。

  1. Azure または SQL Server 環境から .bacpac を使用する場合は、 Fabric T-SQL のサーフェス領域の SQL データベースを満たすようにソース データベースを変更することが必要になる場合があります。 SqlPackage プロパティでサポートされていないオブジェクトをスキップできるようにする別の方法については、 抽出と発行の移植性 に関するページを参照してください。

  2. 通常どおり、Fabric インターフェイスを使用して、新しい Fabric SQL データベースを作成します

  3. 設定から接続文字列をコピーします。

    SQL データベースの [接続文字列] ページを示す Fabric ポータルのスクリーンショット。

  4. ターミナルから sqlpackage フォルダー内で import コマンドを使用します。 所有者の <servername><database_name> を指定します。

    sqlpackage /action:import /sourcefile:"C:\DatabaseName.bacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"
    
    • SQL データベース設定ダイアログから接続文字列を置き換えます。
    • sourcefile 値をローカル コンピューター上の .bacpac の名前 (DatabaseName) と ___location に置き換えます。

インポートの詳細については、「SqlPackage のインポート」を参照してください。

SqlPackage を使用してデータベースをエクスポートする

.bacpac のエクスポートは逆の操作です。先ほどの例と同様に、targetfile.bacpac であり、sourceconnectionstring は SQL データベースの設定ダイアログで確認できます。 所有者の <servername><database_name> を指定します。 次に例を示します。

sqlpackage /action:export /targetfile:"C:\DatabaseName.bacpac" /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"

エクスポートの詳細については、「SqlPackage のエクスポート」を参照してください。

抽出と発行

SQL データベース プロジェクトでスキーマ変更を移動する方法を示すダイアグラム。

.dacpac はデータベース スキーマ モデル ファイルであり、ソース データベース内のテーブル、ストアド プロシージャ、その他のオブジェクトの定義が含まれています。 このファイルは、SqlPackage を使用する既存のデータベースまたは SQL データベース プロジェクトから作成できます。

SqlPackage には、.dacpac を新しい (空の) データベースにデプロイしたり、目的の .dacpac 状態に一致するように既存のデータベースを段階的に更新したりする機能があります。

  • extract を使用すると、既存のデータベースから .dacpac または SQL ファイルを作成できます。
  • publish を使用すると、.dacpac をデータベースにデプロイできます。

SqlPackage の 発行抽出 の構文は、import/export コマンドに似ています。

Warnung

SqlPackage を使用して、SQL プロジェクトまたは .dacpac を Fabric の SQL データベースにデプロイすることをお勧めします。 Visual Studio からの .dacpac のデプロイが失敗する可能性があります。

Azure SQL Database、SQL Server、または Fabric の SQL データベース以外のプラットフォームを対象とする SQL プロジェクトから作成された .dacpac をデプロイするには、プロパティ /p:AllowIncompatiblePlatform=true を SqlPackage 発行コマンドに追加します。

移植性を抽出して公開する

SqlPackage のインポート/エクスポート コマンドは、 .bacpac 形式でのデータの移植性に重点を置きますが、抽出と発行のコマンドは、 .dacpac 形式でデータの移植性を実現できます。 抽出プロパティと発行プロパティを使用して、抽出操作と発行操作の動作を制御し、プラットフォーム間の変換の柔軟性を高めることができます。

.dacpac抽出してデータを含めるには、/p:ExtractAllTableData=true プロパティを使用します。 抽出操作では、ソース データベースのスキーマとデータの両方を含む .dacpac が作成されます。 プロパティ /p:ExtractReferencedServerScopedElements=false では、Fabric の SQL データベースではサポートされていないサーバー スコープの要素が除外されます。 次のコマンドは、Fabric の既存の SQL データベースからデータを含む .dacpac を抽出します。

sqlpackage /action:extract /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /targetfile:"C:\extracted.dacpac" /p:ExtractAllTableData=true  /p:ExtractReferencedServerScopedElements=false

データで抽出された.dacpac発行するには、追加のプロパティは必要ありません。 ただし、いくつかのプロパティを使用して、発行操作の動作を制御できます。

  • /p:AllowIncompatiblePlatform=true では、別のプラットフォーム (Azure SQL Database、SQL Server など) から抽出された .dacpac をデプロイできます。
  • /p:ExcludeObjectTypes=Logins;Users では、Fabric で SQL データベースに発行するときに互換性の問題が発生する可能性があるオブジェクトの種類が除外されます。 除外できるオブジェクトの種類の完全な一覧については、「 SqlPackage の発行」を参照してください。

SqlPackage インポート コマンドと同様に、Fabric の SQL データベースに .dacpac を発行する前に、Fabric でデータベースを作成する必要があります。 データベースは、Fabric ポータルまたはその他の Fabric インターフェイスを使用して作成できます。 次のコマンドは、抽出された .dacpac を Fabric の空の SQL データベースに発行します。

sqlpackage /action:publish /sourcefile:"C:\extracted.dacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /p:AllowIncompatiblePlatform=true /p:ExcludeObjectTypes=Logins;Users