Azure Synapse Analytics の SqlPackage

この記事では、Azure Synapse Analytics での SQLPackageのサポートについて説明します。 これには、次のトピックに関する情報が含まれます。

  • parquet ファイルのデータにアクセスするためのAzure Blob Storage への統合
  • サーバーレス SQL プールでのサポート

専用とサーバーレスどちらの SQL プールでも、SqlPackageまたは.bacpac ファイルでのインポートとエクスポート アクションはサポートされていません。 SqlPackageでは、.dacpac ファイルでのAzure Synapse Analytics がサポートされており、Azure Blog Storage 内の Parquet 形式ファイルに含まれるデータの読み取りと書き込みを行うことができます。 専用 SQL プールからデータをインポートまたはエクスポートするには、以下の詳細に従って、データでの発行または抽出アクションを使用する必要があります。

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

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

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageKey

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

コンテナー内のストレージ ルート パスを設定する追加のパラメーターは、省略可能です。

  • /p:AzureStorageRootPath

このプロパティがない場合、パスの既定値は servername/databasename/timestamp/ になります。 データは、2 部構成のテーブル名を持つ個別のフォルダーに格納されます。

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

SqlPackage /Action:Extract /SourceServerName:yourserver.sql.azuresynapse.net /SourceDatabaseName:databasename /SourceUser:sqladmin /SourcePassword:{your_password} /TargetFile:databaseschema.dacpac /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername /p:AzureStorageKey=storageaccountkey

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

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

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

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

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

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

SqlPackage /Action:Publish /SourceFile:databaseschema.dacpac /TargetServerName:yourserver.sql.azuresynapse.net /TargetDatabaseName:databasename /TargetUser:sqladmin /TargetPassword:{your_password} /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername  /p:AzureStorageKey=storageaccountkey /p:AzureStorageRootPath="yourserver.sql.azuresynapse.net/databasename/6-12-2022_8-09-56_AM/"

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

サーバーレス SQL プールでのサポート

Synapse サーバーレス SQL プールは、抽出および発行アクションの両方でサポートされています。 サーバーレス SQL プールの T-SQL の実行領域は、設計上、外部テーブル、外部ビュー、ストアド プロシージャ、関数、統計、資格情報に制限されています。 サーバーレス SQL プールでは、次の機能をサポートしています。

  • 外部ファイル形式のデルタ
  • PROVIDER、CONNECTION、OBJECT、および CREDENTIAL または SERVER_CREDENTIAL が指定された OPENROWSET プロバイダー CosmosDB
  • OPENROWSETwith ()

次の手順