分享
 
 
 

数据库升迁从sqlserver6.5到sqlserver2000

王朝mssql·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

本文献给在从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的机器运行,发现一切照常,至此升级数据库成功!

===================

本人水平有限,难免出错,望各位指正,批评。

IUPRG (遨云驰行,琢符弄图)

2004-4-8

http://iuprg.51.net

iuprg@163.net

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有