Parquet ファイル内のデータを含む SqlPackage (プレビュー)

この記事では、Parquet 形式の Azure Blob Storage に格納されているデータを操作するための SqlPackage のサポートについて説明します。 SQL Server 2022 および Azure SQL Managed Instance の場合、Azure Blob Storage の Parquet ファイルのデータを抽出して発行するためのプレビュー サポートが、SqlPackage 162.1.176 以降で利用できます。 Azure SQL Database および SQL Server 2019 以前はサポートされていません。 インポートエクスポートのアクションは、引き続き SQL Server、Azure SQL Managed Instance、および Azure SQL Database で使用できます。 Azure Blob Storage での Parquet ファイルのサポートは、引き続き Azure Synapse Analytics で一般提供されています。

抽出を使用して、データベース スキーマ (.dacpac ファイル) は、SqlPackage を実行しているローカル クライアントに書き込まれ、そのデータは Azure Blob Storage に Parquet 形式で書き込まれます。 データは、2 部構成のテーブル名を持つ個別のフォルダーに格納されます。 CETAS は、Azure Blob Storage にファイルを書き込むために使用されます。

公開を使用して、データベース スキーマ (.dacpac ファイル) は、SqlPackage を実行しているローカル クライアントから読み取られるか、それに書き込まれ、そのデータは Azure Blob Storage から Parquet 形式で読み取られます。

Azure でホストされている SQL データベースでは、Parquet ファイルを使用した抽出/公開操作により、多くのシナリオで .bacpac ファイルのインポート/エクスポート操作に対するパフォーマンスが向上します。

抽出 (データのエクスポート)

データベースから Azure Blob Storage にデータをエクスポートするには、SqlPackage の抽出操作を次のプロパティと共に使用します。

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageKey or /p:AzureSharedAccessSignatureToken

BLOB ストレージ コンテナーにアクセスするためにデータベースにアクセスする場合、ストレージ アカウント キーを介して承認されます。 データベース スキーマ (.dacpac ファイル) は、SqlPackage を実行しているローカル クライアントに書き込まれ、そのデータは Azure Blob Storage に Parquet 形式で書き込まれます。

コンテナー内のストレージ ルート パスを設定するパラメーター /p:AzureStorageRootPath は、省略可能です。 このプロパティがない場合、パスの既定値は servername/databasename/timestamp/ になります。 データは、2 部構成のテーブル名を持つ個別のフォルダーに格納されます。 テーブルごとに作成されるファイルの数は、エクスポート時の MAXDOP と使用可能な SQL コアによって異なります。

最後に、このプロパティ /p:TableData は、データをエクスポートするテーブルを指定します。 テーブル名は次の形式で指定してください: schema_name.table_identifier。名前部分はかっこで囲んでも囲まなくても構いません。 このプロパティは、複数のテーブルを示すために複数回指定できます。

次の例では、yourserver という名前のサーバーから、databasename という名前のデータベースを、現在のディレクトリ内の databaseschema.dacpac という名前のローカル ファイルに抽出します。 このデータは、storageaccountkey という名前のストレージ アカウント キーを使用して、storageaccount という名前のストレージ アカウント内の containername という名前のコンテナーに書き込まれます。 このデータは、コンテナー内の servername/databasename/timestamp/ の既定のパスに書き込まれます。

SqlPackage /Action:Extract /SourceServerName:yourserver /SourceDatabaseName:databasename /TargetFile:databaseschema.dacpac /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername /p:AzureStorageKey=storageaccountkey

使用可能なその他の認証の種類の例については、「SqlPackageの抽出」を参照してください。

発行 (データのインポート)

Azure Blob Storage 内の Parquet ファイルからデータベースにデータをインポートするには、SqlPackage の発行操作を次のプロパティと共に使用します。

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageRootPath
  • /p:AzureStorageKey or /p:AzureSharedAccessSignatureToken

公開のアクセスは、ストレージ アカウント キーまたはShared Access Signature (SAS) トークンを使用して承認できます。 データベース スキーマ (.dacpac ファイル) は、SqlPackage を実行しているローカル クライアントから読み取られ、そのデータは Azure Blob Storage から Parquet 形式で読み取られます。

次の例では、yourserver という名前のサーバーから、databasename という名前のデータベースを、現在のディレクトリ内の databaseschema.dacpac という名前のローカル ファイルに発行します。 このデータは、storageaccountkey という名前のストレージ アカウント キーを使用して、storageaccount という名前のストレージ アカウント内の containername という名前のコンテナーから読み取られます。 このデータは、コンテナー内のパス yourserver/databasename/10-19-2023_11-09-56/ の下の各テーブルの個々のフォルダーから読み取られます。

SqlPackage /Action:Publish /SourceFile:databaseschema.dacpac /TargetServerName:yourserver /TargetDatabaseName:databasename /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername  /p:AzureStorageKey=storageaccountkey /p:AzureStorageRootPath="yourserver/databasename/10-19-2023_11-09-56/"

使用可能なその他の認証の種類の例については、「SqlPackageの発行」を参照してください。

制限事項

Polybase

Parquet ファイルを使用した SqlPackage 操作には Polybase が必要です。 Polybase が有効になっている場合は、次のクエリを使用してチェックできます。

// configuration_id = 16397 is 'allow polybase export'
// configuration_id = 16399 is 'polybase enabled'
SELECT configuration_id, value_in_use FROM sys.configurations
WHERE configuration_id IN (16397, 16399)

Polybase または Polybase エクスポートを有効にする必要がある場合があります。 Azure SQL Managed Instance で Polybase を有効にするには、PowerShell または Azure CLI が必要です。 構成を変更する前に、Polybase を有効にすることが環境に適しているかどうかを評価することをお勧めします。

テーブルとデータ型

CETAS でサポートされるデータ型は、Parquet ファイルを使用した抽出および公開操作でサポートされます。

レジャー テーブルは、Parquet ファイルを使用した抽出および公開操作に対して有効になっています。

Always Encrypted を使用して格納されたデータは、Parquet ファイルを使用した抽出および公開操作ではサポートされていません。

次のステップ