You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure PowerShell或GitHub Action创建Azure Synapse专用SQL池还原点或bacpac文件

解决Azure Synapse专用SQL池导出.bacpac文件的问题

问题根源

Azure Synapse专用SQL池(原SQL数据仓库)和Azure SQL数据库的PowerShell cmdlet并不完全兼容,New-AzSqlDatabaseRestorePoint、New-AzSqlDatabaseExport这类针对SQL DB的命令没法适配Synapse的服务器端点,而且不支持自定义连接字符串,哪怕微软文档里写了操作步骤一致,实际跑起来就是不行。

可行解决方案

方案1:用Az.Synapse模块创建恢复点(配合后续导出)

如果需要先创建手动恢复点,再基于恢复点导出,可以用Synapse专属的PowerShell模块:

  1. 先安装/更新模块:
    Install-Module -Name Az.Synapse -Force -AllowClobber
    
  2. 创建恢复点:
    New-AzSynapseSqlPoolRestorePoint -ResourceGroupName "你的资源组" -WorkspaceName "你的Synapse工作区名" -Name "专用SQL池名称" -RestorePointLabel "预部署备份_$(Get-Date -Format 'yyyyMMddHHmm')"
    

方案2:用SQLPackage工具导出bacpac(推荐)

SQLPackage是微软官方工具,完美支持Synapse专用SQL池,还能灵活配置连接字符串,比PowerShell cmdlet靠谱多了:

  1. 先确保runner环境里装了SQLPackage(GitHub-hosted runner可能自带,没有的话可以在工作流里加步骤自动下载安装)
  2. 执行导出命令:
    sqlpackage.exe /Action:Export `
      /SourceConnectionString:"Server=tcp://<你的Synapse工作区名>.sql.azuresynapse.net,1433;Database=<专用SQL池名>;Authentication=Active Directory Service Principal;UID=<服务主体ID>;PWD=<服务主体密钥>;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30" `
      /TargetFile:"$(Build.ArtifactStagingDirectory)/synapse-backup.bacpac" `
      /Properties:Storage=File
    
    连接字符串可以根据你的认证方式调整,比如用SQL账号、Azure AD托管身份都行。

注意事项

  • Synapse的服务器地址格式是<工作区名>.sql.azuresynapse.net,和SQL DB的<服务器名>.database.windows.net不一样,SQLPackage能正确识别这个端点。
  • 如果是在GitHub工作流里用,记得给服务主体分配Synapse专用SQL池的db_exporter角色,以及存储账户的写入权限(如果要把bacpac直接传到存储账户的话,可以把/TargetFile换成存储账户的SAS URL)。

内容的提问来源于stack exchange,提问作者DevFahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:57:21