SQL Server托管实例数据库备份至本地文件系统方案咨询
SQL Server托管实例备份到本地文件系统的解决方案
核心背景说明
SQL Server托管实例本身无直接访问本地文件系统的权限,默认仅支持备份到Azure Blob存储,因此需先解决Blob存储的访问权限问题,再将备份文件下载至本地,最后完成本地恢复。
步骤1:解决Blob存储访问权限并完成备份到Blob
方案A:托管身份授权
- 确认托管实例的系统分配/用户分配托管身份,已被授予目标Blob存储容器的Storage Blob Data Contributor角色权限
- 权限配置完成后,执行备份T-SQL:
BACKUP DATABASE [目标数据库名] TO URL = 'https://你的存储账户.blob.core.windows.net/容器名/备份文件名.bak' WITH COMPRESSION, STATS = 10;
方案B:SAS令牌授权(灵活适配临时权限需求)
- 在Azure门户生成目标Blob容器的SAS令牌,确保包含读、写、列表权限,有效期覆盖备份操作时长
- 在托管实例中创建对应凭据:
CREATE CREDENTIAL [SAS凭据名] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '生成的SAS令牌(需去掉开头的?)'; - 执行备份命令:
BACKUP DATABASE [目标数据库名] TO URL = 'https://你的存储账户.blob.core.windows.net/容器名/备份文件名.bak' WITH CREDENTIAL = 'SAS凭据名', COMPRESSION, STATS = 10;
步骤2:将Blob备份文件下载到本地文件系统
方式A:Azure存储资源管理器
- 登录Azure账号,定位到目标存储容器,找到备份文件后右键选择「下载」,指定本地保存路径
方式B:AzCopy命令行工具
azcopy copy "https://你的存储账户.blob.core.windows.net/容器名/备份文件名.bak?SAS令牌" "C:\本地备份路径\备份文件名.bak"
步骤3:本地SQL Server实例恢复数据库
连接本地SQL Server后,执行恢复脚本(替换路径与数据库名):
RESTORE DATABASE [恢复后的数据库名] FROM DISK = 'C:\本地备份路径\备份文件名.bak' WITH REPLACE, MOVE '原数据库数据文件逻辑名' TO 'C:\本地SQL数据路径\恢复后的数据库名.mdf', MOVE '原数据库日志文件逻辑名' TO 'C:\本地SQL日志路径\恢复后的数据库名.ldf', STATS = 10;
关键注意事项
- SAS令牌需妥善保管,使用后建议及时回收或设置合理有效期
- 备份时启用压缩可显著减少存储占用与下载时间
- 本地恢复前需确认目标路径有足够磁盘空间,且SQL Server服务账户对该路径具备读写权限
内容的提问来源于stack exchange,提问作者Sasquash
相关产品推荐
相关产品推荐

