数据库升迁从sqlserver6.5到sqlserver2000
来源:互联网 发布:淘宝店铺怎么装修2017 编辑:程序博客网 时间:2024/05/06 22:55
本文献给在从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 filesMicrosoft SQL Server80oolsinn,将bcp.exe 和 resources 目录一同拷贝到ntserver4.0 机器的 sqlserver6.5 bcp 工作路径下(c:mssqlinn,将原来的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
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 数据库升迁从sqlserver6.5到sqlserver2000
- 数据库升迁从sqlserver6.5到sqlserver2000
- 升迁从sqlserver6.5到sqlserver2000
- sqlserver6.5升级到sqlserver2000
- 升级SQLSERVER6.5到2000的注意事项
- 随说秋色园从Access升迁到MSSQL过程
- SQLServer2005数据库还原到SQLServer2000
- sqlserver2000到sqlserver2005数据库迁移
- 如何从sqlserver2000恢复到sqlserver2005,能创建新的数据库关系图
- 从MDF文件恢复SqlServer2000数据库
- 从MDF文件恢复SqlServer2000数据库
- 从大熊猫看价值升迁
- access2007无法升迁到sql2005
- ACCESS数据库升迁SQLSERVER注意事项
- 浅谈ACCESS数据库升迁SQLSERVER
- 浅谈ACCESS数据库升迁SQLSERVER
- 破解SQLSERVER6.5的加密存储过程
- 将SQLServer2005 数据库还原或恢复到SQLServer2000数据库中
- SQL Server 2000之日志传送功能 - 问题解决
- 关于 mysql5 改密码后不能登录问题的解答
- Installing Oracle 10g on RHEL AS 3 Step-by-Step
- 为进行 ODBC 访问配置 Microsoft Jet 数据库引擎
- 一番话:单件模式
- 数据库升迁从sqlserver6.5到sqlserver2000
- Web 服务互操作性和 SOAP
- 处理死锁
- VS.NET Beta2安装后添加/删除程序不能正常启动的问题的解决方案
- 如何在SQL SERVER 2000中删除系统文件?
- [c#]:如何在C#中读写INI文件(五)
- PowerBuilder 8.0中ListBox的CheckBox使用方法。
- vb.Net编程简介之四
- 考虑大对象:利用 JAVA 操作 DB2 Universal Database