关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » SQL Server »Access转SQL Server数据库的经验漫谈

    Access转SQL Server数据库的经验漫谈

    2010-07-22 12:53:00 出处:ITJS
    分享

    以下的文章主要描述的是Access转SQL Server数据库的几个经验漫谈,Access数据库作为一个中小型的单机数据库系统,在承担访问量、数据量大的网站应用时,往往就不堪重负了。一般认为。

    超过50M的access数据库性能就开始明显下降,超过100M以后,出错、运行慢的问题会更加突出。而我的BLOG数据库已达到了四百多兆,痛定思痛,决定升级为SQL Server 2005。

    这其中,走了好些弯路,起初我是直接利用企业管理器把Access导入SQL中,发现SQLl数据库表是没有自动字段的,原来Access中的自动字段被转换成了普通字段,需要手工改成标识类型,增量为1。 所有的时间字段,假如定义了默认值,那么原来是now(),现在需要改成getdate() 。原来字段的默认值都不会自动引入,需要对照原表的字段手工添加。注释在Access项目或SQLServer数据库中,前缀“n”代表“国家/地区”,意思是这个数据类型是启用Unicode的。在Access数据库中,全部文本列在默认情况下都是启用Unicode的。真费了我,好些光景。

    如此这般数据库可以调用,程序将就着能运行了,但发现,原来的程序运行起来错误百出。

    原来,Access与SQL程序中使用到的SQL查询语句大体差不多,但是有一些微妙的差别,正是这些差别,造成了程序的不通用,一般要修改的部分如下:

    (1)时间函数的问题:SQL数据库的时间函数与access不同,最常见的是取现在时间的函数,access是now(),SQL是getdate()。因此凡是在where子句中使用了now()的地方都要改成getdate();注意,now()函数在asp程序本身也要使用,凡是不在SQL Server数据库查询或执行语句中使用的now()函数千万不要改。

    (2)时间比较函数:datediff('d','时间1',‘时间2’)这是access查询用的格式,SQl中这些引号都要去掉,同时时间格式的前后可能加上了#,这也要去掉。同样这也是指在sql语句中的,在asp语句中的要保持原样。

    (3)空值的表示:在access中,判断空值一般用是否=""来表示,但是这在SQL中往往出错,假如遇到出错的问题或者程序运行不正常,可以改成如这样判断:where (name is null)

    (4)真假值判断:access中可以用=true、=false来判断,但是在SQL中就会出错,因此在SQL查询或执行语句中这类判断要分别改成=1、=0。注意一点:有些程序虽然写成=“true”,但是由于有引号,所以这个字段是字符类型的,你不能改成=1,保持原样即可。

    (5)在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL Server数据库进行删除是用:"delete user where id=10"。

    (6)在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL Server数据库处理中,却不能用。

    调试程序经常遇到的出错的语句是:conn.execute(sql),注意这句本身是没有错的,错误原因是里面的这个sql字符串,要向上看这个sql字符串是如何生成的,按照上面所说的程序修改办法修改。

    最后向大家推荐一款工具,可以直接生成生成升迁 SQL脚本,保存为 *.sql文件后,SQL2000的查询分析器里调入执行,可以生成升迁 ASP脚本,这样你可以用该脚本和相应MDB数据库上传到服务器在线升迁,可以直接执行Access数据导入到SQL服务器(表结构和数据)。

    程序编制: V37 paintblue.net (2004-11-20)

    版权所有: paintblue.net | blueidea.com

    无论商业还是免费,你可以自由使用

    CooSel2.0 CreateSQL V1.05 

    1.ACCESS的数据库中的自动编号类型在转化时,SQL Server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!

    2.转化时,跟日期有关的字段,SQL Server默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。

    3.对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQLSERVER数据库进行删除是用:"delete user where id=10".

    4.日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQL Server数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。

    5.在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL Server数据库处理中,却不能用。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    IT头条

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    严重缩水!NVIDIA将推中国特供RTX 5090 DD:只剩24GB显存

    00:17

    无线路由大厂 TP-Link突然大裁员:补偿N+3

    02:39

    Meta 千万美金招募AI高级人才

    00:22

    技术热点

    微软已修复windows 7/windows 8.1媒体中心严重漏洞 用户可下载安

    卸载MySQL数据库,用rpm如何实现

    windows 7中使用网上银行或支付宝支付时总是打不开支付页面

    一致性哈希算法原理设计

    MySQL数字类型中的三种常用种类

    如何解决SQL Server中传入select语句in范围参数

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。