网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.用存储过程几个最直接的好处.
.讲解数据库管理系统必须提供的基.
.SQL server如何定时执行一些脚本.
.sql server关于函数中如何使用Ge.
.深入探讨数据仓库设计的步骤 禁忌.
.品味SQL Server 2005的几个新功能.
.快速掌握SQL中几个值得注意的特殊.
.在SQL Server中通过.NET远程的执.
.用SQL SERVER记录站点日志.
.sql server中重置自动编号.
.在SQL Server 2005数据库中修改存.
.用SQL语句复制数据表.
.SQL Server数据库维度表和事实表.
.SQL Server的Collate语句需注意.
.BI有没有前途 数据仓库之路如何继.
.SQL SERVER 2000系统支持的跟踪函.
.查看SQL Server数据空间分配情况.
.SQL优化实例:从运行30分钟到运行.
.基础知识:带你了解最常见的13个.
.细数开发DBA(数据库管理员)的工.

数据库升迁从sqlserver6.5到sqlserver2000

发表日期:2004-4-12


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

 

 

上一篇:SQL Server 7六种数据移动方法 人气:27103
下一篇:用SQL 2000创建用户化XML流 人气:12105
浏览全部sqlserver的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐