您的位置:首页技术开发数据库技巧 → 数据库升迁从sqlserver6.5到sqlserver2000

数据库升迁从sqlserver6.5到sqlserver2000

时间:2004/12/2 1:53:00来源:本站整理作者:蓝点我要评论(0)

IUPRG(原作)


本文献给在从sql6.5到sqlserver2000的数据库升级过程中的迷茫的朋友。


笔者有幸碰到这样一个案例:(有一句话叫:困难有多大,幸福就有多大,这不,幸福来了~)


一家电厂,运行着若干应用系统,其中以物资系统最为重要。体系结构,大致是这样的:NT4.0 server 简体中文版 + SQL server6.5 英文 (物资系统数据)应用系统用powerbuilder6.0开发,已经运行了5年,数据量大概有300M 左右。随着系统不断的使用,现在需要对现有系统升级,从sql6.5到sqlserver2000  从表面上看似乎是数字的变迁,或者是简单的导入导出就可以了,但是我把它想的太简单了。


针对此升级,我使用了三套方案:
1、在sqlserver6.5及其上用外部工具bcp ... out    命令导出;
   用其中的一个表测试,结果导入sqlserver2000


   故障1:bcp ...in 提示“字符串数据,右截位”;
   故障2:汉字的字段显示乱码;
   故障3:有汉字的时间字段格式用bcp in 导入时不能成功。


2、用2000升级向导;
  
   故障1:克服重重困难(要求打补丁,重置登陆方式等)升级完后报告一些不可查看的错误,然后,打开数据库一看,一无所有;
  
   故障2:升级向导无法进行,透明程度高,无法进行错误跟踪。


3、用odbc配置访问sql6.5数据源,然后用sqlserver2000的导入向导;
   故障:在更改了90多个新表名后,开始复制,成功了。但是,汉字显示乱码。随后,在2000上重新建立一个latin general bin1 为排序的数据库,再次导入,故障依旧。


   经历了一周的反复测试,反复失败,最后决定还是采用第一种的方案比较灵活,先将具体步骤整理一下,以饔读者。


   1)在nt server 4.0 机器上 打开sqlserver enterprise manager ,选中要升级的数据库,选中表并且生成创建表的脚本;
   2)生成创建存储过程的脚本;
   3)如果有视图,也请另存为文本,以备使用;
   4)打开isql/w工具,选中待升级的数据库,运行以下语句生成bcp out/in 命令(要不然的话,手动编辑很费劲的):
    select 'bcp mydatabase.dbo.' + name + ' out ' +
 '/DATA/' + name + '.TXT' +
 ' -Usa  -P*** -Sservername -c -C1252'
 from mydatabase..sysobjects
 where type = 'U'



 说明:mydatabase 为数据库名。
       '/DATA/'   是运行bcp的目录下的data目录,需要事先建立。
        ***       数据库密码。
       servername 服务器名称。
       1252       是sqlserver6.5 的默认代码页,必须指定,否则输出的汉字会乱码 。
 
 运行后将结果保存为bcpout.bat
 再将 out 换成 in 生成bcpin.bat 文件用以在sqlserver2000的机器上运行。 


   5)好了,要使用bcp 了,但是我们不能使用sql6.5 上的bcp工具,在我的试验当中用它导出的带有日期字段的数据中会生成诸如“2003 十二月 23 15:09AM ”的格式,这样在sqlserver2000机器上用bcp in 导入时会出现不认识日期格式而出现的复制错误。在此处,必须使用sqlserver 2000的bcp工具,方法:
   打开c:\program files\Microsoft SQL Server\80\tools\binn,将bcp.exe 和 resources 目录一同拷贝到ntserver4.0 机器的 sqlserver6.5 bcp 工作路径下(c:\mssql\binn,将原来的bcp.exe文件更名为bcp65.exe);
   
   6)在nt 机器上建立 upgradedb目录,将bcpin.bat, bcpout.bat和刚才生成的脚本拷贝进来,再建立data目录;
   7)确保sqlserver 服务启动后,双击运行bcpout.bat ,等待结束;
   8)将 upgradedb 目录拷贝或共享到sqlserver2000机器上;
   9)打开sqlserver 2000 enterprise manager ,新建同名的数据库,排序规则为Chinese_Prc_bin;
   10)打开 query anlyzer ,选中该数据库, 运行刚才生成的建立表的脚本,建立表结构;运行刚才生成的存储过程的建立脚本,生成存储过程...  新建和旧库一样的视图;
   11)打开 命令提示符状态,进入upgradeDb目录,运行bcpin.bat,等待结束(如果出错,请检查密码,server name,路径等)。
   12)打开 enterprise manager ,打开数据库,选中其中的表返回所有行,检查数据
   发现汉字显示正常,日期格式也正常。


   13)拷贝原来的应用程序到sqlserver2000的机器运行,发现一切照常,至此升级数据库成功!


 


 


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 mssql企业管理器不能打 Oracle PRKC-1002错误原因和解决方案SQL SERVER数据库日志清空图文教程win2003计算机改名后sql server 2005 本地复DB2错误信息码大全

人气排行 彻底解决mysql中文乱码的办法mysql数据库root密码忘记的修改方法SQL SERVER数据库日志清空图文教程.bak备份文件如何恢复Oracle PRKC-1002错误原因和解决方案Oracle错误代码大全如何将txt的文本数据导入SQL server 2005呢DB2错误信息码大全