如何从Azure专用SQL池备份特定架构及其所有表?
Azure专用SQL池特定架构备份方案
一、.bacpac格式:支持特定架构备份
可以直接导出指定架构及其包含的所有对象(表、视图、存储过程等),推荐用以下两种方式:
- SqlPackage.exe命令行工具:通过指定参数限定导出范围,示例命令如下:
SqlPackage.exe /Action:Export /SourceServerName:your-sqlpool-server.database.windows.net /SourceDatabaseName:your-database /SourceUser:admin-account /SourcePassword:your-password /TargetFile:D:\backups\target-schema.bacpac /p:ExtractScope=Schema /p:SchemaFilter=YourTargetSchema
参数说明:ExtractScope=Schema 指定只按架构维度导出,SchemaFilter 填入你要备份的架构名称即可。
- SQL Server Data Tools (SSDT):在Visual Studio中连接你的专用SQL池,右键选择要备份的架构,通过"数据层应用程序向导"导出为bacpac文件,过程中选择仅包含目标架构。
二、.bak格式:不支持直接备份特定架构
Azure专用SQL池的原生.bak备份仅支持整库备份,无法单独指定架构。如果需要生成.bak格式的部分备份,可通过以下间接方式实现:
- 创建一个新的空Azure专用SQL池,配置与原池匹配的服务等级(保证迁移效率)。
- 将目标架构的所有表结构和数据迁移到新池:可使用Azure Data Factory批量迁移、bcp命令行导出导入,或通过SSDT将目标架构部署到新池并同步数据。
- 对新创建的专用SQL池执行整库备份,生成.bak格式文件。
注意事项
- 使用bacpac导出时,若目标架构存在跨架构的依赖对象(如引用其他架构表的外键),需确认是否需要一并导出这些依赖,否则可能导致导出失败。
- 迁移数据到新池时,建议先测试小批量数据,验证完整性后再执行全量迁移。
内容的提问来源于stack exchange,提问作者SRP
相关产品推荐
相关产品推荐

