SqlPackage for Azure Synapse Analytics

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

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

专用 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/。 数据存储在由两部分构成的表名称命名的单个文件夹中。

示例

下面的示例将数据库 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 or /p:AzureSharedAccessSignatureToken

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

示例

下面的示例将数据库 databasename 从当前目录中的本地文件 databaseschema.dacpac 发布到服务器 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 外部文件格式
  • OPENROWSET 提供程序 CosmosDB 使用 PROVIDER、CONNECTION、OBJECT 和 CREDENTIAL 或指定的 SERVER_CREDENTIAL
  • OPENROWSET 上的 with () 子句

后续步骤