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

以下的文章主要描述的是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

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

 

  1. 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数据库处理中,却不能用。

【编辑推荐】

  1. SQL Server 2000 数据仓库中使用分区之分区的优点
  2. SQL Server 2000 安装时的一些症状归纳
  3. 启动自动执行SQL Server存储过程的实际操作流程
  4. 对SQL Server引擎的介绍
  5. SQL Server数据库与EXCEL数据导入与导出

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/279464.html<

赞 (0)
管理的头像管理
上一篇2025-05-12 01:59
下一篇 2025-05-12 02:01

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注