咨询热线:
024-88614238
最新动态
相关新闻
ACCESS转SQLSERVER

前几天为制作一个网站,需要从ACCESS转至SQLSERVER,从网站上查看了很多的资料,但觉得没

有一个能够全面覆盖要点的,所以我总结一下,顺便给出一些经验。

    首先如果一开始就需要制作SQLSERVER的网站,那么最好将你的爱机装上WINDOWS2000或者

2003这样的SERVER版,这样的版本是支持SQLSERVER正式版的安装的,而XP只能支持个人版或者

开发版,我没有装过,但对于调试网站而言最好还是在正式版下工作,转化的整个过程不算太

复杂,但至少可以省下一些精力。我的爱机是XP,所以只好先用ACCESS调试。

    好了,当你找到一台装有SQLSERVER的机器时,你便可以开始转换并调试了。

    1。先利用转化软件:CooSel2.0 CreateSQL V1.05,我用的这个,非常好用。具体操作的

话,我用的是生成升迁SQL脚本,保存为 *.sql文件后,在SQL2000的查询分析器里调入执行。

而SQLSERVER的具体操作在此不便赘述。这样,你的数据库就转化成了MSSQL数据库

    2。对asp而言,首先是数据库连接文件的修改:这点可以参考动网论坛的conn.asp

Dim ConnStr
sql数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用IP)
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = dvbbs7  数据库名称
SqlPassword =             数据库密码
SqlUsername = dvbbs       数据库用户名
SqlLocalName = (local)
ConnStr = Provider = Sqloledb; User ID = & SqlUsername & ; Password = & SqlPassword

& ; Initial Catalog = & SqlDatabaseName & ; Data Source = & SqlLocalName & ;
On Error Resume Next
Set conn = Server.CreateObject(ADODB.Connection)
conn.open ConnStr

即只需要修改数据库名称、用户名和密码即可覆盖原来的ACCESS连接方法并使用。如果你的网

站同时包含了动网论坛,则可根据1。的操作将动网的数据库也转换成SQLSERVER,值得称道的

是:动网考虑了ACCESS和SQLSERVER两种数据库的使用,因此在修改ASP源代码的时候不需要对

动网的源代码进行更改,可谓方便至极,考虑得十分周全~~

    3。这时候你可以先浏览一下新的网站了,如果出错了,也不用担心,但是有很多页面已经

是可以正常显示了。接着就是对整站程序的修改了。尤其要注意的是:所有的修改都只针对对

数据库进行操作的语句,几乎全是对SQL语句的修改。而在一般的代码中是绝对不需要修改的!

否则会出错!!

    4。真假值的判断。ACCESS提供了布尔值这一数据类型,但是在SQLSERVER中,如果你在SQL

语句中填写Where AA=True则是错误的,因为MSSQL不支持在数据库中True和False的判断。这时

候你需要将所有SQL语句中的True和False改为1和0。而在一般的程序中,例如rs(aa)=True则不

需要修改!因为这句话并不是对数据库的操作。可能你会说这样改起来,对于大网站而言,是非

常麻烦的,的确,但有一些比较简便的方法。比如在dreamweaver中,你可以利用整个文件夹的

查找,找出所有的True和False,然后筛选出对数据库进行操作的True和False并将他们改成1和

0。另外还有一点:在SQLSERVER中也需要更改一下,ACCESS转化后布尔值变成了Bit值,最好将

默认值设为0,即与ACCESS一样设置默认值为False。

    5。有一些网站中提到:sql数据库表是没有自动字段的,因此原来access中的自动字段被

转换成了普通字段,需要手工改成标识类型,增量为1。这点其实软件在转化的过程中已经帮你

完成了,如果你是手工转化的话,确实需要修改标识类型。还有一点我没有遇到过,但是有的

网站也提到了:空值的表示:在access中,判断空值一般用是否=来表示,但是这在SQL中往往

出错,如果遇到出错的问题或者程序运行不正常,可以改成如这样判断:where (name is

null)。

    6。如果你在SQL语句中同时使用了VB函数,很遗憾,这在MSSQL中是不能被辨认的,最好的

方法是先将他在SQL之外处理,然后存入变量中导入到SQL语句中。

    7。最主要的还是时间函数的各种修改,这占到了工作量的90%。其一是将所有数据库操作

语句中的NOW()转化成GETDATE();其二是datediff和dateadd这类函数需要将第一项中的引号去

掉,即datediff(s,date1,date2)改为datediff(s,date1,date2);其三,ACCESS中时间字符串

都用#括起来,而MSSQL中是用来表示的,即等同于一般的字符串;其四有一些时间函数在

MSSQL中是不能被辨认的,基本上所有的SQLSERVER中的时间日期函数如下:

day(),  month(),  year()   
dateadd(datepart,  number,  date),  datapart指定对那一部分加,number知道加多少,

date指定在谁的基础上加。datepart的取值包括,

year,quarter,month,dayofyear,day,week,hour,minute,second,比如明天dateadd(day,1, 

getdate())   
datediff(datepart,date1,date2).  datapart和上面一样。整个函数结果是date2  -  date1 


datename(datepart,  date)  取那一部分,返回字符串。   
datepart(datepart,  date)  取一部分,返回整数。   
getdate()当前时间

PS一下,这是我在CSDN上花100分“买”回来的,很贵。。。可能你要说网上可以搜到N的N次方

条这样的记录,但一来他们的讲解并没到讲到我的问题上来,二来有些东西第一遍看上去没有

感觉,只有反复琢磨才会有收获的。

因此:如果你的时间函数不在上述范围内或者与之不尽相同,请根据相应的说明加以修改。

完成了以上的工作,基本上你的网站就可以正常运行了,当时我修改的时候用了2个小时,我个

人认为完全可以接受,比我当初想像中的要快很多。但是之所以去CSDN问,是因为当时传递了

一个时间作为变量,而当传递过去以后,在SQL中是不能正常执行的,也就是说传递过去的时间

不管你怎么换,SQL都不认为那是时间,因此最好的方法是传递小时,分钟或者日期,单个传递

和判断。datepart返回的就是整数,这样就可以与传递的参数相等了。

沈阳网络公司招聘

联系方式
地址:沈阳市东陵区
万柳塘路109甲1宏发 大厦525室
电话:024-24804848
8748636
15317796
102656105

友情链接(联系QQ:8748636) 沈阳网站制作| 沈阳网站制作| 沈阳SEO公司| 沈阳主机托管| 沈阳网络公司| 沈阳网站制作| 沈阳网站建设|
地址:沈阳市沈河区万柳塘路36-1 弘锦大厦412室 经理QQ:8748636 技术QQ:30999233 联系电话:024-88614238
Copyright? 2005-2013,沈阳海风网络科技有限公司 All Right Reserved. 版权所有 辽ICP备05004358号
【海风数据港】是专业沈阳服务器托管、沈阳网站制作、沈阳网站优化、沈阳网站建设的沈阳网络公司