具体是这样,之前老系统的数据库,在过去几年间数据不断增长,数据库文件添加的比较混乱,大约数据文件和日志文件都有若干个的样子。目前系统升级,数据库内部设计一样,但是在新的服务器上规划好了不同的若干个数据文件组,和一个日志文件。记得的数据库还原好像只能按照备份数据库的文件组来
求助各位大虾,怎样才能将备份的bak文件,还原到一个新建好了不同FileGroup的数据库中?
(或者从原数据库如何备份有什么需要注意的,也请指教!)数据库还原SQL Server FILEGROUP
求助各位大虾,怎样才能将备份的bak文件,还原到一个新建好了不同FileGroup的数据库中?
(或者从原数据库如何备份有什么需要注意的,也请指教!)数据库还原SQL Server FILEGROUP
restore database test_other --新的数据库名称
from disk = 'c:\test_1.bak'
with file = 2,
move 'test' to 'c:\test_other.mdf', --数据的逻辑名称->新的物理路径
move 'test_log' to 'c:\test_other_log.log' --日志的逻辑名称->新的物理路径
具体情况是备份文件中是有1个mdf文件,5个ndf文件,3个日志文件。
而新建好的数据库有1个mdf文件,10个ndf文件,1个ldf文件。Move的语法好像只能起到对原来的文件重名名以及改变路径的作用吧?
目前是我的文件个数什么都变化了哦!
具体情况是备份文件中是有1个mdf文件,5个ndf文件,3个日志文件。
而新建好的数据库有1个mdf文件,10个ndf文件,1个ldf文件。Move的语法好像只能起到对原来的文件重名名以及改变路径的作用吧?
目前是我的文件个数什么都变化了哦!哦,除了文件个数增多外,
原来的数据库有几个文件组呢,现在的数据库有几个文件组呢,
目标新建好的数据库是mdf文件一个文件组,ldf文件一个文件组,然后每两个ndf文件一个文件组。怎样才能成功还原呢 - -``
alter database 原来的数据库
add filegroup 新增文件组名--增加文件到文件组
alter database 原来的数据库
add file
(
name = 文件的逻辑名,
filename = '文件的物理路径.ndf',
size = 100MB
)
to filegroup 新增文件组名
我觉得能不能这样,你先把原来的数据库还原到新的sql服务器上,可以使用move选项,来给你的原来的文件指定新的物理路径,然后,通过下面的命令,按照需要创建新的文件组,然后把文件加入到新的文件组:
--增加文件组
alter database 原来的数据库
add filegroup 新增文件组名--增加文件到文件组
alter database 原来的数据库
add file
(
name = 文件的逻辑名,
filename = '文件的物理路径.ndf',
size = 100MB
)
to filegroup 新增文件组名
不过和具体情况有一些冲突:
1、新的数据库已经创建(含FileGroup、LogicName等),而该方案会破坏这种既定结构。
2、假使我不先建好新的数据库,按照还原时通过Move指定位置并重命名的方法,会有下面的问题:
比如旧的数据库mdf文件是50G,ndf是30G(假设有3个ndf文件),ldf若干,
我新规划的数据库mdf文件是80G,ndf文件初始20G(定义了20个ndf文件,属于10个文件组),ldf不论。
这种情况按照你的方案只能是mdf过来是50G,然后后面3个ndf文件,然后我再用ALTER DB add file把剩下的ndf文件添加上去~~~这样跟规划不符哇 ~~~
不过和具体情况有一些冲突:
1、新的数据库已经创建(含FileGroup、LogicName等),而该方案会破坏这种既定结构。
2、假使我不先建好新的数据库,按照还原时通过Move指定位置并重命名的方法,会有下面的问题:
比如旧的数据库mdf文件是50G,ndf是30G(假设有3个ndf文件),ldf若干,
我新规划的数据库mdf文件是80G,ndf文件初始20G(定义了20个ndf文件,属于10个文件组),ldf不论。
这种情况按照你的方案只能是mdf过来是50G,然后后面3个ndf文件,然后我再用ALTER DB add file把剩下的ndf文件添加上去~~~这样跟规划不符哇 ~~~1.新的数据库已经创建,但是你现在想把老的数据库还原到新的数据库上,肯定是会覆盖掉新的数据库的。2.新的mdf是80G,原来的是50G,那么还原以后,可以通过下面的命令,增加mdf的文件到80G。--修改数据文件的大小,增长大小,最大大小
ALTER DATABASE 数据库
MODIFY FILE
(
NAME = '逻辑文件名',
SIZE = 81920MB, --必须大于之前的大小,否则报错
FILEGROWTH = 10%
)
不科学呀~那样会相当麻烦的~有的表数亿条数据,怎么导入呢?
用INSERT的话还得分段拆分导入多次还容易出错(况且空间基本不足够多还原一个库...)...
所以还是数据库直接还原最靠谱呀,不过这个各种文件组大小数量一改,很纠结的说...