首先如果一开始就需要制作SQL Server的网站,那么最好将你的爱机装上Windows 2000或者2003这样的Server版,这样的版本是支持SQL Server正式版的安装的,而XP只能支持个人版或者开发版,我没有装过,但对于调试网站而言最好还是在正式版下工作,转化的整个过程不算太复杂,但至少可以省下一些精力。我的爱机是XP,所以只好先用ACCESS调试。

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

1。先利用转化软件:CooSel2.0 CreateSQL V1.05,我用的这个,非常好用。具体操作的话,我用的是生成升迁SQL脚本,保存为 *.sql文件后,在SQL2000的查询分析器里调入执行。而SQL Server的具体操作在此不便赘述。这样,你的数据库就转化成了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。的操作将动网的数据库也转换成SQL Server,值得称道的是:动网考虑了ACCESS和SQL Server两种数据库的使用,因此在修改ASP源代码的时候不需要对动网的源代码进行更改,可谓方便至极,考虑得十分周全~~

3。这时候你可以先浏览一下新的网站了,如果出错了,也不用担心,但是有很多页面已经是可以正常显示了。接着就是对整站程序的修改了。尤其要注意的是:所有的修改都只针对对数据库进行操作的语句,几乎全是对SQL语句的修改。而在一般的代码中是绝对不需要修改的!否则会出错!!

4。真假值的判断。ACCESS提供了布尔值这一数据类型,但是在SQL Server中,如果你在SQL语句中填写Where AA=True则是错误的,因为MSSQL不支持在数据库中True和False的判断。这时候你需要将所有SQL语句中的True和False改为1和0。而在一般的程序中,例如rs("aa")=True则不需要修改!因为这句话并不是对数据库的操作。可能你会说这样改起来,对于大网站而言,是非常麻烦的,的确,但有一些比较简便的方法。比如在dreamweaver中,你可以利用整个文件夹的查找,找出所有的True和False,然后筛选出对数据库进行操作的True和False并将他们改成1和0。另外还有一点:在SQL Server中也需要更改一下,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中是不能被辨认的,基本上所有的SQL Server中的时间日期函数如下:

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返回的就是整数,这样就可以与传递的参数相等了。

 » 订阅本站:http://feed.x2009.net

您可能会对以下内容有兴趣:

  1. 如何改变IE浏览器的首页,以及首页设置变成灰色锁定,标题栏修复 问:     请问如何修改IE浏览器的首页设置?新装的系统,还不太会设置. 答: 常规方法     打开IE浏览器,如果你的是IE7,请先按一下Alt键,就会出现菜单栏,然后点”工具”菜单,然后点”Internet 属性”.将首页的文字输入框里的内容设置为您需要设置的地址,比如www.x2009.net 如果以上方法无效,请尝试以下方法. 注册表的修改方法...
  2. 网站迁移成功     国内形势严峻,做个站不容易啊,又是这又是那,不得不为了自由而逃离了,这个域名尝试了备案,但是要求寄送资料,如此麻烦,也就放弃了。即便拿到备案又如何?真的安全了吗?大错特错,我的cn就是有备案的,但是谁知道下一次会是如何呢,所以还是完全脱离出来吧,     其实迁移网站很容易,我这网站是wordpress的,只要用phpMyAdmin导出数据库,然后用编辑器批量修改一下内容,比如我的,只需要将老域名替换成www.x2009.net,然后导入回数据库,就可以了。接着更改一下网站绑定。一切就OK了。   当然,为了老用户能访问,为了搜索引擎知道我们更换了域名。只需要在原来的网站目录放个.htaccess文件(如果老网站和新网站的文件夹是同一个,也可行),内容如下,那么通过老域名访问的用户也会切换过来。包括搜索引擎也知道,我们永久性迁移了网站…… RewriteEngine On RewriteCond %{HTTP_HOST} !^www.x2009.net$  [NC]...
  3. 打开迅雷时提示Init Task Manager failed!的解决办法     今天打开迅雷,却提示Init Task Manager failed!,很奇怪这是什么错误,嘿,先试了一下覆盖安装不行,然后完全卸载迅雷再装,也不行,经过百度才发现,原来是缺少VC库(文件msvcp71.dll、msvcr71.dll)导致,解决办法很简单.      去  http://u.x2009.net/y#msvcp71.dll_msvcr71.dll下载msvcp71.dll和msvcr71.dll放置到系统文件夹下面就可以了(通常是C:\Windows)     然后再打开!问题就解决了,稍微设置一下迅雷,继续下载!...
  4. 安装或者重装Sql Server2000时提示挂起文件错误的解决办法     最近因为需要安装Sql Server 2000数据库,所以下载了个安装程序,但是在安装Sql Server 2000软件时,老是提示“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机”,解决办法如下。     点开始菜单,点击“运行”,输入Regedit然后按回车键打开注册表编辑器,从左侧依次展开到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager然后在右侧视图当中的PendingFileRenameOperations值即可    ...
  5. 什么是Unix时间戳(Unix timestamp,Unix Time),以及转换普通时间的方法 什么是Unix时间戳(Unix timestamp)? Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。 目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Unix时间戳最多可以使用到格林威治时间2038年01月19日03时14分07秒(二进制:01111111 11111111...