共用方式為


適用於 Azure Synapse Analytics 的 SqlPackage

本文介紹 了 Azure Synapse Analytics 的 SqlPackage 支援。 內容涵蓋以下主題:

  • 與 Azure Blob 儲存體整合以訪問 Parquet 文件中的資料
  • 支援無伺服器 SQL 池

專用與無伺服器的 SQL 池都不支援 SqlPackage 或 .bacpac 檔案中的匯入/匯出操作。 SqlPackage 支援 Azure Synapse Analytics 的 .dacpac 檔案,並能在 Azure Blog Storage 中讀寫 parquet 格式的資料。 要從專用的 SQL 池匯入或匯出資料,必須使用發佈或匯出動作來處理下列資料。

擷取 (匯出資料)

若要將 Azure Synapse Analytics 資料庫的資料匯出至 Azure Blob 儲存,會使用 SqlPackage 擷取 動作,並搭配以下屬性:

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

數據庫存取 Blob 記憶體容器的存取權是透過記憶體帳戶密鑰授權的。 資料庫結構(.dacpac 檔案)會寫入執行 SqlPackage 的本地用戶端,資料則以 parquet 格式寫入 Azure Blob Storage。

另外一個參數是可選的,用來設定容器內的儲存根路徑:

  • /p:AzureStorageRootPath

如果沒有此屬性,路徑預設為 servername/databasename/timestamp/。 資料儲存在以兩部分資料表命名的獨立資料夾中。

範例

下列範例會將名為 databasename 的資料庫從名為 yourserver.sql.azuresynapse.net 的伺服器擷取到目前目錄中名為 databaseschema.dacpac 的本機檔案。 資料會使用名為 storageaccountkey 的儲存帳號金鑰,寫入名為 containername 的容器中,並儲存在名為 storageaccount 的儲存帳號中。 數據會寫入容器中 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 或 /p:AzureSharedAccessSignatureToken

發行的存取權可以透過記憶體帳戶密鑰或共用存取簽章 (SAS) 令牌獲得授權。 資料庫結構(.dacpac 檔案)從執行 SqlPackage 的本地用戶端讀取,資料則從 Azure Blob Storage 以 parquet 格式讀取。

範例

下列範例會從目前目錄中名為 databasename 的本機檔案,將名為 yourserver.sql.azuresynapse.net 的資料庫發行至名為 databaseschema.dacpac 的伺服器。 資料是從一個儲存帳戶中指定的 containername 容器讀取,該容器 storageaccount 使用名為 storageaccountkey的儲存帳戶金鑰。 數據會從容器中路徑 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 池的支援中:

  • Delta 外部檔案格式
  • OPENROWSET 提供者 CosmosDB,需指定 PROVIDER、CONNECTION、OBJECT 和 CREDENTIAL,或 SERVER_CREDENTIAL。
  • with () OPENROWSET 上的子句

後續步驟