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 ()
子句
后续步骤
- 详细了解提取
- 详细了解发布
- 了解有关 Azure Blob 存储的详细信息
- 详细了解 Azure 存储帐户密钥