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

SQL DBMI中无需重生成完整.bak,绕过日志恢复备份的方案咨询

可行替代方案:无需重新生成完整备份恢复SQL DBMI的多日志文件备份

问题背景

尝试在Azure Databricks中通过以下代码恢复Azure SQL托管实例(DBMI)的备份文件时,遇到错误提示DBMI不支持从包含多个日志文件的备份恢复,且无法重新生成不含日志的完整备份:

url2 = 'https:/[REDACTED]/PROD_2009_2round.bak'

# Define restore command using the credential object
restore_command = f"""
RESTORE DATABASE [PROD_2009] 
FROM URL = '{url2}';
"""

# Execute restore command
cursor.execute(restore_command)

# Close cursor and connection
cursor.close()
conn.close()

错误信息:

ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Restoring from a backup that contains multiple log files is not supported in SQL Database Managed Instance. (41921) (SQLExecDirectW)')

替代方案

方案1:在SQL Server实例上预处理备份文件(本地/Azure VM)

  • 将目标.bak文件下载到本地SQL Server或Azure VM上的SQL Server实例中
  • 执行RESTORE FILELISTONLY命令查看备份内的文件列表,确认数据文件和日志文件的逻辑名:
RESTORE FILELISTONLY FROM DISK = 'C:\your-path\PROD_2009_2round.bak'
  • 恢复数据库时仅保留数据文件,将日志文件重定向到临时位置,之后清理日志:
RESTORE DATABASE [PROD_2009_TEMP]
FROM DISK = 'C:\your-path\PROD_2009_2round.bak'
WITH MOVE 'YourDataFileLogicalName' TO 'C:\temp\PROD_2009.mdf',
     MOVE 'YourLogFileLogicalName' TO 'C:\temp\PROD_2009.ldf',
     REPLACE
  • 对预处理后的数据库生成仅含数据的备份:
BACKUP DATABASE [PROD_2009_TEMP]
TO DISK = 'C:\your-path\PROD_2009_CLEAN.bak'
WITH COPY_ONLY, COMPRESSION, STATS = 10
  • 将新生成的PROD_2009_CLEAN.bak上传回原存储位置,再在Databricks中执行原恢复命令即可

方案2:结合AZCopy批量处理Blob存储中的备份

如果备份文件已存储在Azure Blob存储,可通过AZCopy工具完成下载-处理-上传流程:

  • 下载备份到Azure VM的SQL Server实例:
azcopy copy "https://[your-storage-account].blob.core.windows.net/your-container/PROD_2009_2round.bak" "D:\backups\PROD_2009_2round.bak" --sas-token "[your-sas-token]"
  • 按照方案1的步骤处理备份,生成干净的备份文件
  • 将新备份上传回Blob存储:
azcopy copy "D:\backups\PROD_2009_CLEAN.bak" "https://[your-storage-account].blob.core.windows.net/your-container/PROD_2009_CLEAN.bak" --sas-token "[your-sas-token]"
  • 在Databricks中恢复新的备份文件

方案3:自动化处理流程(适用于重复场景)

如果需要频繁处理此类备份,可通过Azure Data Factory(ADF)或Azure Logic Apps配置自动化管道:

  • 配置Blob存储到Azure VM的文件复制活动
  • 添加T-SQL执行活动,完成备份预处理和新备份生成
  • 配置VM到Blob存储的文件上传活动
  • 触发Databricks作业执行恢复命令

内容的提问来源于stack exchange,提问作者Nathanael Tom Aterado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 02:47:21