Share via


適用於 Azure Synapse Analytics 的 SqlPackage

本文涵蓋 Azure Synapse Analytics 的 SqlPackage 支援。 其中包含下列主題的資訊:

  • 與 Azure Blob 儲存體整合,以存取 parquet 檔案中的資料
  • 支援無伺服器 SQL 集區

專用和無伺服器 SQL 集區都不支援 SqlPackage 或 .bacpac 檔案中的匯入/匯出動作。 SqlPackage 支援使用 .dacpac 檔案的 Azure Synapse Analytics,且可以在 Azure 部落格儲存體的 parquet 格式檔案中讀取和寫入資料。 如需從專用 SQL 集區匯入或匯出資料,您必須使用發佈或擷取動作搭配資料,詳述如下。

擷取 (匯出資料)

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

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

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

其他參數為選擇性,其會設定容器內的儲存體根路徑:

  • /p:AzureStorageRootPath

如果沒有這個屬性,路徑會預設為 servername/databasename/timestamp/。 資料會儲存在具有 2 部分資料表名稱的個別資料夾中。

範例

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

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

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

範例

下列範例會從目前目錄中名為 databaseschema.dacpac 的本機檔案,將名為 databasename 的資料庫發佈至名為 yourserver.sql.azuresynapse.net 的伺服器。 資料會使用名為 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
  • OPENROWSET 上的 with () 子句

後續步驟