恢复sql2008数据库时想减少mdf文件和ldf文件

时间:2021-01-20 19:05:28
原数据库有三个mdf文件和两个ldf文件,都是100多MB,在备份之后的恢复时想减少这些文件。其实数据库中的数据并不多。
多谢各位了。

以下是恢复前的情况:

name  physical_name
COMSYS_DATA1 d:\db\MSSAD1.mdf
COMSYS_DATA2 d:\db\MSSAD2.mdf
COMSYS_DATA3 d:\db\MSSAD3.mdf
COMSYS_LOG1 d:\db\MSSAD_1.ldf
COMSYS_LOG2 d:\db\MSSAD_2.ldf


恢复后的预想情况:

name  physical_name
COMSYS_DATA1 d:\db\MSSAD1.mdf
COMSYS_LOG1 d:\db\MSSAD_1.ldf

7 个解决方案

#1


备份前是乍样,还原后就是咋样,你只能还原后处理一下而已。
对于mdf,可以使用:
步骤1:
恢复sql2008数据库时想减少mdf文件和ldf文件
步骤2:
恢复sql2008数据库时想减少mdf文件和ldf文件
来处理,把其他mdf的文件移到第一个那里,但是你的命名不规范,应该用ndf来作为非第一个数据文件。

对于ldf,先做一次日志备份。然后把最后一个ldf删掉。

#2


非常感谢!
但我通过你的方法收缩后,原来的数据文件还存在。
我是从d:\db\MSSAD3.mdf先收缩起的,再收缩d:\db\MSSAD2.mdf。收缩后能直接删除mdf文件吗?
你说我的命名不规范,什么样的命名才是规范的呢?我用ndf做第二个以后的数据文件名后,也是一样的情况!
再次感谢。

#3


引用 2 楼 cuckoo1 的回复:
非常感谢!
但我通过你的方法收缩后,原来的数据文件还存在。
我是从d:\db\MSSAD3.mdf先收缩起的,再收缩d:\db\MSSAD2.mdf。收缩后能直接删除mdf文件吗?
你说我的命名不规范,什么样的命名才是规范的呢?我用ndf做第二个以后的数据文件名后,也是一样的情况!
再次感谢。
如果你的第一个或者前面空间不足以容纳其他mdf的数据,那么是清空不了,而且清空后需要手动删除的,不会自动删除的。一个数据库的数据文件,建议只有一个mdf,其他用ndf。虽然不是强制,但是这样命名符合微软的建议。

#4


谢谢。
我将mdf文件收缩后,手工删除了。
我是通过以下方式删除ldf文件的,不知道对数据库有没有影响:
先分离数据库,在附加时,将ldf文件项删除,附加成功后,系统自动增加了另一个ldf文件(很小). 这样做可行吗?
另外,我的数据库中的数据很小,估计不足20MB,但数据库属性中显示有95MB(见下图),这是什么情况呢?
恢复sql2008数据库时想减少mdf文件和ldf文件

#5


我个人不建议在数据库出现严重性错误(比如崩溃之类)的时候直接处理ldf,因为这个文件非常重要,你先做一次日志备份,记得是日志备份,其他备份类型不截断日志。再分离,再删除不需要的ldf,而第一个ldf建议不要动,如果你觉得大了。先做日志备份,然后再收缩日志就可以了,如果还是很大,证明ldf里面还有很多未提交事务,你删除的话会导致数据库的数据混乱。

下次麻烦引用一下别人回复,这样我可以直接在系统信息里面看到你问我问题,不然帖子太多我有时候找不到

#6


还有一个方法,仅供参考:
1、创建一个新数据库。
2、用导入导出工具把数据和数据库的对象,如存储过程、视图等。导过去。然后重命名你的新数据库即可。

#7


非常感谢。接分。

#1


备份前是乍样,还原后就是咋样,你只能还原后处理一下而已。
对于mdf,可以使用:
步骤1:
恢复sql2008数据库时想减少mdf文件和ldf文件
步骤2:
恢复sql2008数据库时想减少mdf文件和ldf文件
来处理,把其他mdf的文件移到第一个那里,但是你的命名不规范,应该用ndf来作为非第一个数据文件。

对于ldf,先做一次日志备份。然后把最后一个ldf删掉。

#2


非常感谢!
但我通过你的方法收缩后,原来的数据文件还存在。
我是从d:\db\MSSAD3.mdf先收缩起的,再收缩d:\db\MSSAD2.mdf。收缩后能直接删除mdf文件吗?
你说我的命名不规范,什么样的命名才是规范的呢?我用ndf做第二个以后的数据文件名后,也是一样的情况!
再次感谢。

#3


引用 2 楼 cuckoo1 的回复:
非常感谢!
但我通过你的方法收缩后,原来的数据文件还存在。
我是从d:\db\MSSAD3.mdf先收缩起的,再收缩d:\db\MSSAD2.mdf。收缩后能直接删除mdf文件吗?
你说我的命名不规范,什么样的命名才是规范的呢?我用ndf做第二个以后的数据文件名后,也是一样的情况!
再次感谢。
如果你的第一个或者前面空间不足以容纳其他mdf的数据,那么是清空不了,而且清空后需要手动删除的,不会自动删除的。一个数据库的数据文件,建议只有一个mdf,其他用ndf。虽然不是强制,但是这样命名符合微软的建议。

#4


谢谢。
我将mdf文件收缩后,手工删除了。
我是通过以下方式删除ldf文件的,不知道对数据库有没有影响:
先分离数据库,在附加时,将ldf文件项删除,附加成功后,系统自动增加了另一个ldf文件(很小). 这样做可行吗?
另外,我的数据库中的数据很小,估计不足20MB,但数据库属性中显示有95MB(见下图),这是什么情况呢?
恢复sql2008数据库时想减少mdf文件和ldf文件

#5


我个人不建议在数据库出现严重性错误(比如崩溃之类)的时候直接处理ldf,因为这个文件非常重要,你先做一次日志备份,记得是日志备份,其他备份类型不截断日志。再分离,再删除不需要的ldf,而第一个ldf建议不要动,如果你觉得大了。先做日志备份,然后再收缩日志就可以了,如果还是很大,证明ldf里面还有很多未提交事务,你删除的话会导致数据库的数据混乱。

下次麻烦引用一下别人回复,这样我可以直接在系统信息里面看到你问我问题,不然帖子太多我有时候找不到

#6


还有一个方法,仅供参考:
1、创建一个新数据库。
2、用导入导出工具把数据和数据库的对象,如存储过程、视图等。导过去。然后重命名你的新数据库即可。

#7


非常感谢。接分。