SQL Server 在缺少文件组的情况下如何还原数据库
2014-08-29 17:06 听风吹雨 阅读(3896) 评论(0) 编辑 收藏 举报SQL Server 在缺少文件组的情况下如何还原数据库
一、背景
我有一个A库,由于a,b两张表的数据量比较大,所以对表进行分区;在把A库迁移到一个新的集群上去,我只备份了A库的主分区过去进行还原为B库(主分区的备份还原可参考:SQL Server 维护计划备份主分区 和 主分区备份与还原),为了对a,b表进新的数据,我修改了a,b表名,在B库新建了两张不分区的a,b表;
这样运行都没有什么问题的,但是在一次我分离了数据库B,拷贝了mdf和ldf文件,现在想使用mdf和ldf还原为B库的时候出错了;
二、解决过程
在使用SSMS的还原功能进行还原的时候出现了下面的错误:
(图1:找不到文件组)
(图2:手动创建一个ndf文件报错)
在还原的时候需要指定ndf文件的目录,但是由于在备份的时候我们只备份了主文件,所以是没有ndf文件的(注意:表结构是在主文件组的,所以这里会显示ndf文件信息),这个时候想通过删除列表中ndf,却发现删除按钮不可用,如图1所示;
在对应的目录中手动创建一个ndf文件,出现了图2的错误,因为无法读取到文件头;
难道就无法还原数据库B了嘛?不要着急,我们把上面的操作生成SQL代码,把不需要的ndf文件删除掉,剩下类似下面的SQL代码,执行,还原了数据库B!
USE [master] GO CREATE DATABASE [QQMonitor] ON ( FILENAME = N'E:\DBBackup\DBName.mdf' ), ( FILENAME = N'E:\DBBackup\DBName_log.ldf' ) FOR ATTACH GO
或者自己直接写代码,例如以下的代码:
--还原主分区 RESTORE DATABASE [TestAnt] FILEGROUP='PRIMARY' FROM DISK='F:\DBBackup\Ant_Primary\Ant_Primary_20110916000001.bak' WITH FILE = 1, MOVE N'Barefoot.Ant' TO N'F:\DBBackup\TestAnt.mdf', MOVE N'Barefoot.Ant_log' TO N'F:\DBBackup\TestAnt_log.ldf', RECOVERY,REPLACE, STATS = 10 GO
作者:听风吹雨
出处:
http://www.cnblogs.com/gaizai/
邮箱:gaizai@126.com
版权:本文版权归作者和博客园共有
转载:欢迎转载,必须保留原文链接
格言:不喜欢是因为不会 && 因为会所以喜欢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
2013-08-29 SQL Server 维护计划实现数据库备份(策略实战)
2011-08-29 SQL Server 设计开发系列(文章索引)