如题,今天帮朋友把一个客户的SQL2005备份数据库文件导入到我朋友的SQL2000服务器中。为此,整整折腾了3天的时间。总算弄明白了。为此,想和也有这方面问题的朋友交流一下经验。
简单说一下思路。
总体思路为:备份文件导入到本地SQL2005服务器上,接着由于要导入的SQL SERVER是2000的,因此做一个脚本,使数据库结构转换为SQL2000的数据库结构版本,最后,再用导入/导出的方法从本地导入到远程(目标)服务器上的OVER了。
我原以为客户的数据库备份文件是SQL2000的数据库备份文件,于是第一时间在虚拟机上配了个SQL2000。结果在做还原数据库时,系统提示说数据库结构版本与现有服务器数据库结构版本不一致并且给出了该本文文件的数据库结构版本号和现有服务器的数据库结构版本号。惊讶~没想到现在还真有客户的网站开始用SQL2005了。于是乎,噼里啪啦的有下了SQL2005来安装。为了保证SQL2005的安装更为顺利,顺便为以后做实验,还特别下了个WIN2008SP2(总共耗时1天还多)。
由于客户原来使用的数据库版本是SQL2005,自然要比SQL2000的数据结构稍有不同。为此,我先把SQL2005导入到自己的服务器上(其实也是想试验一下,搞不好是SQL2008呢?)。接下来的做法跟SQL2005导入到SQL2000的步骤来做就可以了。即:生成SQL2000脚本、在目标服务器上运行这个脚本,之后就是从本地导入数据库到目标服务器上。这部分的操作步骤在网上很多,可以自己去找或者查看我博客的相关文章。
需要说明的是,.BAK文件再倒入到本地服务器时,可不像恢复数据库的操作那么简单。需要以下几个步骤:
我的操作以在SQL2005环境下为例:
1、新建一个数据库(例如:abc)
2、右键点击abc数据库,在弹出的菜单中选择“任务”-->“还原”-->“数据”
3、选择需要备份的数据库文件(录入:123.bak)
4、点击“选项”,选择“覆盖现有数据库”
5、点击“物理路径”,修改为“ABC”数据库的文件路径。(也就是把还原的数据库文件,包括事务日志文件,点选为ABC数据库的数据库文件和事务日志文件,起到覆盖的效果)
6、点击“确定”,系统就开始还原了。
另外,还要注意的是,在导入数据到目标服务器时,如果源数据表中有ID这样的主键字段时,一定要选择允许插入主键,否则导入数据时会因为主键无法插入,但主键又不能为空值而产生错误。