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

Azure数据库自动化上传:PowerShell从SSMS导出.bacpac文件求助

自动化用PowerShell导出SQL Server .bacpac文件

嗨,刚接触Azure的话,这个自动化导出需求其实很好解决!咱们不用再依赖SSMS的手动操作,直接用微软官方的SqlPackage.exe工具就能实现——它就是SSMS里「导出数据层应用」功能背后的命令行核心,完全支持脚本化自动化。

第一步:先找到SqlPackage.exe的位置

SqlPackage一般会跟着SSMS一起安装,默认路径大概是这样的(版本号对应你的SSMS版本,比如160对应SSMS 19,旧版本可以换成150/140):

C:\Program Files\Microsoft SQL Server\160\DAC\bin\SqlPackage.exe

要是不确定具体路径,用这条PowerShell命令快速查找:

Get-ChildItem -Path "C:\Program Files\Microsoft SQL Server" -Filter "SqlPackage.exe" -Recurse

第二步:编写PowerShell导出脚本

下面是一个完整的可直接复用的脚本,你只需要替换成自己的数据库信息就行:

# 自定义配置参数
$serverInstance = "你的SQL服务器实例名(比如localhost或者远程IP,端口)"
$dbName = "要导出的目标数据库名称"
$outputBacpacPath = "C:\Your\Save\Path\database_export.bacpac"
$sqlUsername = "SQL登录账号" # 用Windows身份验证的话可以删掉这两行
$sqlPassword = "SQL登录密码"

# 调用SqlPackage执行导出
& "C:\Program Files\Microsoft SQL Server\160\DAC\bin\SqlPackage.exe" `
    /Action:Extract `
    /SourceServerName:$serverInstance `
    /SourceDatabaseName:$dbName `
    /TargetFile:$outputBacpacPath `
    /SourceUser:$sqlUsername `
    /SourcePassword:$sqlPassword

# 检查导出结果
if ($LASTEXITCODE -eq 0) {
    Write-Host "✅ .bacpac文件导出成功!路径:$outputBacpacPath"
} else {
    Write-Error "❌ 导出失败,错误代码:$LASTEXITCODE"
}

关键参数说明:

  • /Action:Extract:明确告诉工具要执行「提取数据层应用」的操作(也就是生成.bacpac)
  • 如果用Windows身份验证,直接删掉/SourceUser和/SourcePassword这两行,工具会自动用当前登录的Windows账号权限连接数据库

后续上传Azure的小提醒

导出完成后,你可以继续用SqlPackage或者Azure PowerShell的Az.Sql模块把.bacpac上传到Azure SQL数据库。比如用SqlPackage的/Action:Import参数,或者New-AzSqlDatabaseImport cmdlet,这样就能把「版本转换→导出bacpac→上传Azure」整个流程完全自动化啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:05:41