如何将.bak文件导入Azure SQL Database?求转换及操作指引
将.bak文件转换为.bacpac并导入Azure SQL Database的完整步骤
一、将.bak文件恢复到本地SQL Server实例
Azure SQL Database无法直接读取.bak文件,需先将备份恢复到本地/虚拟机上的SQL Server(建议使用SQL Server 2012及以上版本,确保与备份文件兼容):
- 打开SQL Server Management Studio(SSMS),连接到本地SQL Server实例
- 右键「数据库」→「还原数据库」
- 选择「源」为「设备」,点击「...」添加目标.bak文件
- 在「目标」栏设置恢复后的数据库名称(如
TestDB_Restored) - 检查数据、日志文件的存储路径(确保磁盘有足够空间),点击「确定」完成恢复
二、将恢复后的数据库导出为.bacpac文件
方法1:通过SSMS可视化操作
- 在SSMS中右键已恢复的数据库→「任务」→「导出数据层应用」
- 在导出向导中选择「保存到本地磁盘」,指定.bacpac文件的保存路径和文件名
- 选择要导出的对象(默认导出全库,可按需筛选)
- 确认设置后点击「完成」,等待导出完成
方法2:使用SqlPackage命令行(适合自动化场景)
- 先安装SqlPackage工具(属于SQL Server数据工具组件,可单独下载)
- 打开命令提示符,执行以下命令(替换参数为你的实际信息):
SqlPackage.exe /Action:Export /SourceServerName:localhost\SQLEXPRESS /SourceDatabaseName:TestDB_Restored /TargetFile:"C:\Backups\TestDB.bacpac"
三、将.bacpac导入Azure SQL Database
方法1:通过Azure门户操作
- 登录Azure门户,进入你的Azure SQL Server页面
- 在左侧「数据管理」菜单下点击「导入数据层应用」
- 若.bacpac在本地,选择「上传」并上传文件;若已存储在Azure Blob存储,直接选择对应存储账户和文件
- 设置目标数据库名称、服务目标(如Basic/Standard),输入SQL Server管理员用户名和密码
- 点击「确定」启动导入,等待进度完成(时间取决于文件大小)
方法2:使用SqlPackage命令行导入
- 执行以下命令(替换参数为你的Azure SQL信息):
SqlPackage.exe /Action:Import /SourceFile:"C:\Backups\TestDB.bacpac" /TargetServerName:your-sql-server.database.windows.net /TargetDatabaseName:TestDB_Azure /TargetUser:admin-user /TargetPassword:admin-pass
注意事项
- 若导出.bacpac失败,检查原数据库是否包含Azure SQL Database不支持的特性(如FileStream、CLR自定义对象),需先移除这些特性再导出
- 导入前需确保Azure SQL Server防火墙规则允许本地IP(使用本地工具时)或Azure服务访问
- 选择与数据量匹配的服务目标,避免因资源不足导致导入超时或失败
内容的提问来源于stack exchange,提问作者Abhishek Chaudhary
相关产品推荐
相关产品推荐

