以下的文章主要描述的是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 | blueide ***
无论商业还是免费,你可以自由使用
CooSel2.0 CreateSQL V1.05
1.ACCESS的数据库中的自动编号类型在转化时,SQL Server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!
2.转化时,跟日期有关的字段,SQL Server默认为 *** alldatetime型,我们更好将它变为datetime型,因为datetime型的范围比 *** alldatetime型大。我遇见这种情况,用 *** alldatetime型时,转化失败,而用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数据库处理中,却不能用。
很多使用Windows 7系统的朋友都想小编反应,假如暂停使用电脑,鼠标会出现停顿现象,这是怎么回事呢 该怎么解决呢 下面就和小编一起去看下Windows 7 usb鼠标停顿的解决方法吧。 由于Windows 7系统中有一项USB选择性暂停造成的。这项设置主要为了节电,当他检测到用户没有对系统进行...
国外媒体CNET NEWS就这个“上帝模式”和微软Windows部门主管Steven Sinofsky进行邮件交流后得知,这其实只是众多快捷方式中的一个,Sinofsky在邮件里给出了十多个这类快捷方式的关键字符串。 它们的建立方法和之前的“上帝模式”一样,在任意位置新建的一个文件夹,然后改名即可...
北京时间1月13日消息,根据计划,微软将于2015年1月13日正式结束对Windows 7SP1的“主流支持”,而这也标志着“扩展支持”阶段的开始,这个阶段将于2020年1月14日结束。 2013年10月份,微软终止销售独立的Windows 7系统安装包,并要求制造商于2014年10月份停止生...
最近一些Windows 7用户反馈说,自己在截屏的时候出现黑屏,导致自己截的图黑呼呼一片。这个问题该怎么解决?今天小编就为大家提供一个解决的方法。 步骤 1 在windows xp时代,很多用户都曾被视频截图后的“全黑图片”困扰。对此,在解决本地播放时出现的截图变黑问题,一般有两个方法可以用来解...
问题现象,具体如下所示: 故障分析: 一般来说,出现这种情况是因为电脑误删系统文件或者是系统文件被顽固木马破坏。 解决方法: 1、下载360安全卫士,找到里面的急救箱开始急救,然后进行修复,完成后重新启动; 2、下载瑞...
问:我在Windows 7 Ultimate X64下播放电影视频时,不管什么格式都会蓝屏,错误代码“0x00000124”。换解码器、播放器不行,换驱动、内存也不管用。在不同的电脑上也试过,仍然蓝屏。请问是哪里的问题,如何解决 答:64位 Windows 7直接使用PotPlayer x64就...