选择显示字体大小

浅谈access数据库升迁sqlserver

 在软件开发过程中经常会遇到数据库升迁的问题,原因比较多,如acsess访问速度比sql server慢、删除数据记录后access会留下空档,文件越来越大(也可用压缩修复的方式减小文件大小,但太麻烦),访问速度越来越慢,甚至会数据库损坏,损坏得比较轻的可以找第三方工具来修复,便严重时会导致数据库无法修复,或修复后数据记录会损坏。所以我们大有必要升迁我们现有的access数据库到sql server;
现谈谈笔者在升迁时的做法及注意事项
1,对于日期字段字段
  access表示为:#1981-28-12#
  sqlserver2000表示为:''1981-02-12''
2,sql语句区别,select ,update 在对单表操作时都差不多,
但多表操作时update语句的区别accesssqlserver中的update语句对比:
  sqlserver中更新多表的update语句:
  update tab1
  set a.name = b.name
  from tab1 a,tab2 b
  where a.id = b.id;
  同样功能的sql语句在access中应该是
  update tab1 a,tab2 b
  set a.name = b.name
  where a.id = b.id;
即:access中的update语句没有from子句,所有引用的表都列在update关键字后.
更新单表时:都为:
update table1 set ab='12',cd=444 where ....
3,delete语句
   access中删除时用:delete * from table1 where a>2 即只要把select 语句里的select 换成delete就可以了。
  sqlserve 中则为: delete from table1 where a>2 即没有*号
4,as 后面的计算字段区别
access中可以这样:select a,sum(num) as kc_num,kc_num*num as all_kc_num  即可以把as后的字段当作一个数据库字段参与计算。
sqlserver 中则为:select a,sum(num) as kc_num,sum(num)*num as all_kc_num  即不可以把as后的字段当作一个数据库字段参与计算。
5,[.]与[!]的区别
  access中多表联合查询时:select tab1!a as tab1a,tab2!b tab2b from tab1,tab2  ,中间的as可以不要。
 sqlserve 中则:select tab1.a as tab1a,tab2.b tab2b from tab1,tab2  ,中间的as可以不要。
6,联合查询时,
   access中多表联合查询:'select a,b from(
select a,b from tab1 where a>3 union select c,d from tab2 ) group by a,b
sqlserve 中则'select a,b from(
select a,b from tab1 where a>3 union select c,d from tab2 ) tmptable group by a,b即要加一个虚的表tmptable,表名任意。---
7,access升级到sqlserver时,
  可以用sqlserver的数据导入工具导入数据,但要做必要的处理。
  access中的自动编号,不会自动转换sql中的自动编号,只能转换为int型,要把它手工改成标识字段,种子为1,把所有导入被sqlserver转化成的以n开头的字段类型的n去掉,如nvarchar->varchar.把需要有秒类型的日期字段改成datatime类型(sql会把所有的日期开转化成smalldatetime型)
8,true与1=1
access用where true表示条件为真,
sqlserver用where 1=1表示条件为真
9,判断字段值为空的区别
普通空:
access和sql server一样 where code is null 或 where code is nol null
条件空:
    access:iif([num] is null,0,[num])  或 iif([num] is null,[num1],[num])
    sqlserver: isnull([num],0) 或 isnull([num],[num1])
10,sql语句取子串的区别
access:mid(字段,n1,[n2]),left(字段,n),right(字段,n)
如:select left(cs1,4)+'-'+cs2 as cs3
sqlserver: substring(expression, start, length)
如:select substring(cs1, 1, 2) + substring(cs1, 4, 2) + '-' + cs2 as cs3 
附:如何发布基于ado+sql server的应用
  很多朋友在问如何发布基于ado+sql server的应用程序,笔者作了测试,如下:
win98访问xp或2k的sql server 2000服务器,不用任何sql的dll文件,只要保证98能与其它工作组里的机子正常通信(能访问另外一台机子里的共享文件),这一步是保证98安装了这三个协议,tcp/ip,spx/ipx.netbeuidg三个协议,
 我的测试环境是,98se+xp,98se只安装了必要的驱动程序,其它的程序一个也没有装(专门装来测试这个的) 


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons