適用対象:✅ 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 データベースの開発サイクルがオフラインで可能になり、より動的になります。
前提条件
- 既存の Fabric 容量が必要です。 そうでない場合は、Fabric 試用版を開始します。
- Fabric テナント設定で SQL データベースが有効になっていることを確認してください。
- 新しいワークスペースを作成するか、既存の Fabric ワークスペースを使用します。
- Fabric で SQL データベースを作成するか、既存のものを使います。 まだない場合は、新しい Fabric SQL データベースを作成します。
- .NET 8 SDK をインストールします。
セットアップ
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 Fabric の SQL データベースのバックアップからの復元」を参照してください。
Azure または SQL Server 環境から
.bacpac
を使用する場合は、 Fabric T-SQL のサーフェス領域の SQL データベースを満たすようにソース データベースを変更することが必要になる場合があります。 SqlPackage プロパティでサポートされていないオブジェクトをスキップできるようにする別の方法については、 抽出と発行の移植性 に関するページを参照してください。通常どおり、Fabric インターフェイスを使用して、新しい Fabric SQL データベースを作成します。
設定から接続文字列をコピーします。
ターミナルから 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 のエクスポート」を参照してください。
抽出と発行
.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