分享方式:


使用 Parquet 檔案中資料的 SqlPackage (預覽版)

本文涵蓋 SqlPackage 對與儲存在 Parquet 格式的 Azure Blob 儲存體中的資料互動的支援。 對於 SQL Server 2022 和 Azure SQL 受控執行個體,SqlPackage 162.1.176 及更高版本中提供了在 Azure Blob 儲存體中的 Parquet 檔案中擷取發佈資料的預覽支援。 不支援 Azure SQL 資料庫和 SQL Server 2019 及更早版本。 匯入匯出動作繼續可用於 SQL Server、Azure SQL 受控執行個體和 Azure SQL 資料庫。 Azure Synapse Analytics 繼續普遍支援 Azure Blob 儲存體中的 Parquet 檔案。

透過擷取,資料庫結構描述 (.dacpac 檔案) 會被寫入執行 SqlPackage 的本機用戶端,並將資料以 Parquet 格式寫入 Azure Blob 儲存體。 資料會儲存在具有兩部分資料表名稱的個別資料夾中。 CETAS 用於在 Azure Blob 儲存體中寫入檔案。

透過發佈,會從執行 SqlPackage 的本機用戶端讀取資料庫結構描述 (.dacpac 檔案),並以 Parquet 格式從 Azure Blob 儲存體讀取資料或將資料寫入其中。

在 Azure 託管的 SQL 資料庫中,在許多情況下,使用 Parquet 檔案的擷取/發佈作業比使用 .bacpac 檔案的匯入/匯出作業提供了更高的效能。

擷取 (匯出資料)

為了將資料從資料庫匯出至 Azure Blob 儲存體,SqlPackage 擷取動作會搭配下列屬性使用:

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

資料庫存取 Blob 儲存體容器的存取權,是透過儲存體帳戶金鑰獲得授權。 資料庫結構描述 (.dacpac 檔案) 會寫入執行 SqlPackage 的本機用戶端,並將資料以 Parquet 格式寫入 Azure Blob 儲存體。

參數 /p:AzureStorageRootPath 是選用的,其會設定容器內的儲存體根路徑。 如果沒有這個屬性,路徑會預設為 servername/databasename/timestamp/。 資料會儲存在具有兩部分資料表名稱的個別資料夾中。 每個資料表建立的檔案數目取決於匯出時的 MAXDOP 和可用 SQL 核心。

最後,屬性 /p:TableData 會指定哪些資料表已匯出資料。 以 schema_name.table_identifier 格式指定資料表名稱,名稱部分使用或不用括弧括住。 可多次指定此屬性來表示多個資料表。

範例

下列範例會將名為 databasename 的資料庫從名為 yourserver 的伺服器擷取到目前目錄中名為 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 儲存體中的 Parquet 檔案匯入至資料庫,SqlPackage 發佈動作會搭配下列屬性使用:

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

您可以透過儲存體帳戶金鑰或共用存取簽章 (SAS) 權杖來授權發佈的存取權。 會從執行 SqlPackage 的本機用戶端讀取資料庫結構描述 (.dacpac 檔案),並以 Parquet 格式從 Azure Blob 儲存體讀取資料。

範例

下列範例會從目前目錄中名為 databaseschema.dacpac 的本機檔案,將名為 databasename 的資料庫發佈至名為 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

使用 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)

您可能需要啟用 PolybasePolybase 匯出。 在 Azure SQL 受控執行個體上啟用 Polybase 需要 PowerShell 或 Azure CLI。 建議您先評估啟用 Polybase 是否適合您的環境,然後再進行組態變更。

資料表和資料類型

Parquet 檔案的擷取和發佈作業支援 CETAS 支援的資料類型。

Parquet 檔案的擷取和發佈作業會啟用總帳資料表。

Parquet 檔案的擷取和發佈作業不支援使用 Always Encrypted 儲存的資料。

後續步驟