如题,今天帮朋友把一个客户的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环境下为例:
一、新建一个数据库(例如:abc)
二、右键点击abc数据库,在弹出的菜单中选择“任务”-->“还原”-->“数据”
三、选择须要备份的数据库文件(录入:123.bak)
四、点击“选项”,选择“覆盖现有数据库”
五、点击“物理路径”,修改成“ABC”数据库的文件路径。(也就是把还原的数据库文件,包括事务日志文件,点选为ABC数据库的数据库文件和事务日志文件,起到覆盖的效果)
六、点击“肯定”,系统就开始还原了。
另外,还要注意的是,在导入数据到目标服务器时,若是源数据表中有ID这样的主键字段时,必定要选择容许插入主键,不然导入数据时会由于主键没法插入,但主键又不能为空值而产生错误。