转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> Sql Server >> 正文
数据库升迁从sqlserver6.5到sqlserver2000         

数据库升迁从sqlserver6.5到sqlserver2000

作者:闵涛 文章来源:闵涛的学习笔记 点击数:833 更新时间:2007/11/14 11:07:16

本文献给在从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

 


[互联动态]20008年最紧缺的IT人才和最热门七大技术  [聊天工具]Office 2000 服务器扩展
[聊天工具]最cool的p2p软件——edonkey2000  [系统软件]八招秘籍保证Windows 2000安全
[系统软件]关于Windows2000Server的灾难恢复  [系统软件]活用Windows2000/XP/2003的故障恢复控制台
[系统软件]巧用Win2000/XP“管理工具”优化操作系统  [常用软件]office2000FAQ(三)
[常用软件]ICQ2000b中的新功能  [C语言系列]SQLServer2000 JDBC驱动的完整安装及测试说明
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台