适用于 Azure Synapse Analytics 的 SqlPackage

本文介绍对 Azure Synapse Analytics 的 SqlPackage 支持。 其中包括有关以下主题的信息:

  • 与 Azure Blob 存储集成,用于访问 parquet 文件中的数据
  • 支持无服务器 SQL 池

专用和无服务器 SQL 池都不支持 SqlPackage 或 .bacpac 文件中的导入/导出作。 SqlPackage 支持 Azure Synapse Analytics .dacpac 文件,并且可以在 Azure Blob 存储中以 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 部分表名称的单个文件夹中。

Example

以下示例将名为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 publish 操作,并设置以下属性:

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

可以通过存储帐户密钥或共享访问签名(SAS)令牌来授权发布访问权限。 数据库架构(.dacpac 文件)从运行 SqlPackage 的本地客户端读取,数据以 parquet 格式从 Azure Blob 存储读取。

Example

以下示例展示如何从当前目录中的一个名为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 池的支持中:

  • Delta 外部文件格式
  • 具有 PROVIDER、CONNECTION、OBJECT 和 CREDENTIAL 或指定SERVER_CREDENTIAL的 OPENROWSET 提供程序 CosmosDB
  • with ()OPENROWSET上的子句

后续步骤