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
相关产品推荐
相关产品推荐

