SQL2000在其他设备还原数据库遇到的问题

背景情况

首先前提背景是甲方使用的是SQL2000做的数据库,而我们要做的是基于它的数据库的数据,做一些处理,并显示成甲方需要的形式。合作的搭档需要先看到实际数据的形式,对方给了一个完全没有任何后缀的文件说这是样本数据库,但我通过查资料得知,SQL2000备份数据库后,一般备份格式是一个文件bak或者是两个文件mdfldf,所以我拿到这个文件后,默默的有点蒙逼。

解决路程

1 首先是开始查,SQL2000还原数据库一般的步骤是啥(主要还是懒得浪费时间摸索),大众给出的经验是这样的

1、可以通过附加数据库文件的方法来还原,把数据库mdf文件拷贝到目标电脑上,然后在目标电脑上打开SQL Server Management Studio管理器,右键点击数据库,选择“附加”,点击“添加…”按钮,并选择拷贝的mdf文件,最后确定即可。
2、可以通过还原数据库的方法来还原,把数据库备份bak文件拷贝到目标电脑上,然后在目标电脑上打开SQL Server Management Studio管理器,然后右键单击数据库-选择还原数据库,首先写好数据库名-选择源设备-文件-添加数据库文件(文件名是以.bak结尾的备份文件),最后确定。

我手里没有mdf、bak中的任何一个,只能把他给我的无文件格式的文档添加进去,结果当然不出意外报了错:

设备**错误 物理文件名可能有误SQL2000在其他设备还原数据库遇到的问题

2 冷静分析后,第一时间猜测了可能是因为我的文档没有后缀的原因,所以首先尝试了一下备份时是否可以备份到无后缀的文档中,对默认的数据库model做了备份操作,备份到无文件格式后缀的model文档中,发现是成功备份的。接着把该文档还原回来,也还原成功了。这一发现让我心里石头瞬间落下了一半,文件后缀问题基本排除。
3 接下来就是安心分析报错原因了。
查看是否有祖传经验时,看到MYSQL版主在帮其他人解决问题时说了这么一句:

你是在同一台机器上备份,然后还原的时候,报的错吗,应该不会出现这个问题吧。
一定要确定,所要还原的备份文件,还原产生的物理路径,在你的机器中存在
比如你备份的数据库中包含了E盘上的2个文件,而在另一台服务器上,你还原的时候,由于服务器上没有E盘,就会报:物理文件名不存在。

豁然开朗,居然是路径问题!我创建了他提示的那个文件夹并把样本数据库文档放进去,以这个路径重新进行还原操作,此报错被完美解决~
4 但又出了点插曲,同时他报了新错:

设备上的卷不是多家族媒体集的一部分

SQL2000在其他设备还原数据库遇到的问题
然后发现应该是备份过不只一个数据库的问题,
备份数据库时,把’添加’左边那里面的备份文件目录删除应该就可以了
它只允许相同数据库备份文件名存在.最好是单独只有一个备份名字
([原文link]http://blog.chinaunix.net/uid-20219870-id-1971282.html
删掉之前错误的文件路径,再次运行,成功还原。
NICE,完美整好~

PS: 试水的时候发现有这么个错,给自己留条路,以防以后碰到:

恢复master数据库时错误“必须以单用户模式使用restore database”

1、可以在命令行模式下输入sqlservr -c -f -m或者输入sqlservr -m其中:-c 可以缩短启动时间,SQL Server 不作为Windows NT的服务启动,-f 用最小配置启动SQL Server,-m 单用户模式启动SQL Server
2、可以在控制面板-管理工具-服务-MSSQLServer的启动参数中输入-c -f -m或者输入-m,点击启动。
3、还有一种更灵活的启动方法:用存在注册表里的启动参数启动:
在MSSQLServer项下添加项SingleUser,具体内容如下所示:
HKEY_LOCAL_MACHINESoftwareMicrosoftMSSQLServerSingleUserParameters
SQLArg0 : REG_SZ : -dC:MSSQL7DATAMASTER.DAT
SQLArg1 : REG_SZ : -eC:MSSQL7LOGERRORLOG
SQLArg2 : REG_SZ : -lC:MSSQL7DATAMASTLOG.DAT
SQLArg3 : REG_SZ : -m
在命令行下输入SQLServr -c -sSingleUser,注意:必须是在命令行下进入单用户模式后,启动Query Analyzer(查询分析器)执行restore语句即可。
恢复数据库的sql语句:RESTORE DATABASE master from disk=‘c:\具体的备份文件名’。
在实际操作过程中我使用的是第二种方法,简单快捷,首先按照路径打开MSSQLServer服务,然后停止服务,在输入参数那一栏内输入“-m”,然后重新启动服务,然后回到企业管理器中来恢复master数据库,ok,恢复成功。
在SQL Server数据库中,系统信息存储在系统数据库中,主要的系统数据库包括:
master-从整体上控制用户数据库和SQL Server操作,在创建了任何用户定义的对象后,都要备份它
model-为新数据库提供模版和原型
msdb-包含了有关作业、报警及操作员等信息
如果包含系统数据库的介质变了,那么必须重建系统数据库,如果你仍然可以启动SQL Server服务,则可以通过RESTORE语句从系统数据库的备份中恢复数据库。

[引用原文link]https://blog.csdn.net/yxwmzouzou/article/details/45306395