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

无需az-cli实现Azure Managed SQL通过SqlPackage导出到Blob容器自动化

可以不借助az-cli完成,以下是几种可行方案:

方案1:用.NET SDK整合导出与上传

先用SqlPackage完成数据库导出(通过代码调用命令行工具),再借助Azure Storage SDK直接把文件传到Blob容器:

  • 第一步,安装NuGet包 Azure.Storage.Blobs
  • 示例代码(C#):
using Azure.Storage.Blobs;
using System.Diagnostics;

// 调用SqlPackage执行导出
var sqlPackageExe = @"C:\Program Files\Microsoft SQL Server\160\DAC\bin\SqlPackage.exe";
var exportCommand = $"/Action:Export /SourceServerName:your-managed-sql.database.windows.net /SourceDatabaseName:your-db /SourceUser:admin /SourcePassword:your-password /TargetFile:C:\temp\db-export.bacpac";
Process.Start(sqlPackageExe, exportCommand).WaitForExit();

// 上传到Blob容器
var storageConnString = "your-blob-storage-connection-string";
var containerName = "backup-container";
var containerClient = new BlobContainerClient(storageConnString, containerName);
containerClient.UploadBlob("db-export.bacpac", File.OpenRead(@"C:\temp\db-export.bacpac"));

这种方式可以把流程整合到自动化程序或脚本里,全程可控,完全不依赖az-cli。

方案2:PowerShell + Azure Storage模块

用PowerShell先调用SqlPackage导出,再用Azure Storage模块的命令上传文件:

  • 首次使用先安装模块:Install-Module -Name Az.Storage
  • 示例脚本:
# 执行SqlPackage导出
$sqlPackagePath = "C:\Program Files\Microsoft SQL Server\160\DAC\bin\SqlPackage.exe"
$exportParams = "/Action:Export /SourceServerName:your-managed-sql.database.windows.net /SourceDatabaseName:your-db /SourceUser:admin /SourcePassword:your-password /TargetFile:C:\temp\db-export.bacpac"
& $sqlPackagePath $exportParams

# 上传到Blob容器
$storageConn = "your-blob-storage-connection-string"
$container = "backup-container"
Set-AzStorageBlobContent -File "C:\temp\db-export.bacpac" -Container $container -Blob "db-export.bacpac" -ConnectionString $storageConn

自动化环境里要确保PowerShell已配置好权限,不需要交互式登录验证。

方案3:直接用SqlPackage导出到Blob(最简洁)

SqlPackage本身支持直接导出到Azure Blob容器,不用先存本地文件,一步到位:

SqlPackage.exe /Action:Export `
  /SourceServerName:your-managed-sql.database.windows.net `
  /SourceDatabaseName:your-db `
  /SourceUser:admin `
  /SourcePassword:your-password `
  /TargetUrl:https://your-storage-account.blob.core.windows.net/your-container/db-export.bacpac `
  /TargetStorageKey:your-storage-account-access-key

这个方案完全跳过本地文件环节,也不需要az-cli,是最省心的选择。

权限注意事项

不管用哪种方案,操作账号需要具备:

  • Azure Managed SQL Server的导出权限(至少db_backupoperator数据库角色)
  • Blob容器的写入权限(可以用存储账户访问密钥,或者通过Azure AD分配Storage Blob Data Contributor角色)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:52:36