SQL SERVER差异备份还原
本文测试恢复单独的差异备份文件。报错:无法还原日志备份或差异备份,因为没有文件可用于前滚。
SSMS恢复完整备份文件没有问题,但差异备份恢复始终报错。以下是微软帮助文档中示例:
--微软帮助文档 RESTORE DATABASE AdventureWorks2008R2 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak' WITH FILE = 6 NORECOVERY; RESTORE DATABASE AdventureWorks2008R2 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak' WITH FILE = 9 RECOVERY;
WITH FILE = 6 处会报错(后同,原因是备份集后缺少逗号分隔),这是针对同一文件中包含多个备份集情况。但说明了关键一点,即:
/* 第1步,还原完整备份,必须使用 WITH NORECOVERY ,不对数据库执行操作,不回滚事务,使数据库处于【正在还原...】状态,
此时数据库不可使用,但可继续还原其它文件; 第2步,还原差异备份,使用 WITH RECOVERY,回滚未提交事务,使数据库恢复到可使用状态。 */
了解了这一点,即使使用SSMS进行差异备份还原操作,也可以正常还原。这说明:
1,在不是还原当前数据库时,会出现以上状况。因为在恢复当前数据库时,会始终显示并选中最近完整备份,差异备份则可选。
2,在不是还原当前数据库时,始终需要最近完整备份文件,并按照上面两步,才能还原到最新差异备份(在SSMS中还原当前差异备份时,SSMS帮我们两步合一步而已)。
另附示例,使用其它数据库备份,恢复新数据库到指定文件位置:
--使用 BACKUP 和 RESTORE 复制数据库 BACKUP DATABASE AdventureWorks2008R2 TO AdventureWorks2008R2Backups ; RESTORE FILELISTONLY FROM AdventureWorks2008R2Backups ; RESTORE DATABASE TestDB FROM AdventureWorks2008R2Backups WITH MOVE 'AdventureWorks2008R2_Data' TO 'C:\MySQLServer\testdb.mdf', MOVE 'AdventureWorks2008R2_Log' TO 'C:\MySQLServer\testdb.ldf';
分类:
SQL SERVER
标签:
SQLSERVER
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构