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 で一般提供されます。
抽出では、SqlPackage を実行しているローカル クライアントにデータベース スキーマ (.dacpac
ファイル) が書き込まれ、データが Parquet 形式で Azure Blob Storage に書き込まれます。 データは、2 部構成のテーブル名で名前が付けられた個々のフォルダーに格納されます。 CETAS は、Azure Blob Storage にファイルを書き込むのに使用されます。
発行では、SqlPackage を実行しているローカル クライアントからデータベース スキーマ (.dacpac
ファイル) が読み取られ、データが Parquet 形式で Azure Blob Storage から読み取られたり、Azure Blob Storage に書き込まれたりします。
Azure でホストされている SQL データベースでは、Parquet ファイルを使用した抽出/発行操作により、多くのシナリオで .bacpac
ファイルのインポート/エクスポート操作に対するパフォーマンスが向上します。
抽出 (データのエクスポート)
データベースから Azure Blob Storage にデータをエクスポートするには、SqlPackage 抽出 アクションが次のプロパティで使用されます。
- /p:AzureStorageBlobEndpoint
- /p:AzureStorageContainer
- /p:AzureStorageKey または /p:AzureSharedAccessSignatureToken
BLOB ストレージ コンテナーにアクセスするためのデータベースへのアクセスは、ストレージ アカウント キーを使用して承認されます。 データベース スキーマ (.dacpac ファイル) は、SqlPackage を実行しているローカル クライアントに書き込まれ、データは Parquet 形式で Azure Blob Storage に書き込まれます。
パラメーター /p:AzureStorageRootPath
は省略可能で、コンテナー内のストレージ ルート パスを設定します。 このプロパティを指定しない場合、パスの既定値は servername/databasename/timestamp/
です。 データは、2 部構成のテーブル名で名前が付けられた個々のフォルダーに格納されます。 テーブルごとに作成されるファイルの数は、エクスポート時の MAXDOP と使用可能な SQL コアによって異なります。
最後に、/p:TableData
プロパティは、データをエクスポートするテーブルを指定します。 名前部分を囲む角かっこを付ける・付けないにかかわらず、schema_name.table_identifier 形式でテーブル名を指定します。 このプロパティは、複数のテーブルを示すために複数回指定できます。
例
次の例では、yourserver
という名前のサーバーから現在のディレクトリ内の databaseschema.dacpac
という名前のローカル ファイルに databasename
という名前のデータベースを抽出します。 データは、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 または /p:AzureSharedAccessSignatureToken
発行のアクセスは、ストレージ アカウント キーまたは Shared Access Signature (SAS) トークンを使用して承認できます。 データベース スキーマ (.dacpac ファイル) は、SqlPackage を実行しているローカル クライアントから読み取られ、データは Parquet 形式で Azure Blob Storage から読み取られます。
例
次の例では、databasename
という名前のデータベースを、現在のディレクトリ内の databaseschema.dacpac
という名前のローカル ファイルから yourserver
という名前のサーバーに発行します。 データは、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
Polybase は、Parquet ファイルを使用する SqlPackage 操作に必要です。 次のクエリを使用して、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 ファイルを使用した抽出および発行操作ではサポートされていません。
サポートされていない型のデータベースの確認は、SqlPackage によって Parquet に抽出する前に行われますが、T-SQL を使用してデータベースをすばやく調べることができます。 次のサンプル クエリでは、Parquet ファイルへの書き込みがサポートされていない型を持つ型とテーブルの結果セットが返されます。
SELECT DISTINCT C.DATA_TYPE, C.TABLE_SCHEMA, C.TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C
ON T.TABLE_SCHEMA = C.TABLE_SCHEMA
AND T.TABLE_NAME = C.TABLE_NAME
AND T.TABLE_TYPE = 'BASE TABLE'
WHERE C.DATA_TYPE NOT IN (
'binary',
'varbinary',
'char',
'varchar',
'nchar',
'nvarchar',
'smalldate',
'smalldatetime',
'date',
'datetime',
'datetime2',
'datetimeoffset',
'time',
'decimal',
'numeric',
'float',
'real',
'bigint',
'tinyint',
'smallint',
'int',
'bigint',
'bit',
'money',
'smallmoney',
'uniqueidentifier'
)
次の手順
- Extract の詳細を確認する
- Publish の詳細を確認する
- Azure Blob Storage について詳しく知る
- Azure Storage Shared Access Signature (SAS) の詳細を確認する
- Azure ストレージ アカウント キー の詳細を確認する