把论坛从ACCESS转成SQL版本

时间:2009-04-13 15:59:00 

网上大部分的免费asp程序使用的是access数据库。但是access数据库作为一个中小型的单机数据库系统,在承担访问量、数据量大的网站应用时,往往就不堪重负了。一般认为,超过50M的access数据库性能就开始明显下降,超过100M以后,出错、运行慢的问题会更加突出。

尽管可以如动网7.0以后那样,从程序的角度尽量优化以图提高性能,但是不能从根本上解决问题。

这时也许使用微软的SQL Server数据库就是最可能的办法,当然也可以使用其它的如Oracle、MySQL等等,但是作为改写来说,由于同为微软的产品,改写成SQL Server应该是最省力的办法。

一、改写前提:

  系统已经安装好SQL Server2000并且打上了SP3补丁;安装好Office套件里面的Access;使用一个支持纯文本编辑并且带有行号显示的编辑器,推荐Ultra Edit,当然也可以使用FrontPage2003,不过以前的版本行号显示不太好用。

个人能力要求:会基本的asp语法、access数据库的操作、SQLServer企业管理器的基本操作。

二、数据库的准备

  一般来说有两种情况:
  1、程序提供了SQL数据库格式:有一个MDF文件,或者提供了创建SQL数据库的SQL脚本文件(后缀名为.sql)。
  如果有mdf文件,可以用企业管理器直接附加上,如果提供的是sql脚本文件,那么就先用企业管理器自己创建一个sql数据库,然后数据库用企业管理器中的查询分析器运行这个脚本创建数据库表。
这样建立的数据库基本不用再去改写什么了。
  2、更多的是没有提供SQL数据库或脚本文件的,这时,就要自己来做这一切了,这也是我们这个帖子主要解决的问题。一般这样的程序会提供一个access数据库,这样你就用企业管理器导入access数据库,导入后需要改写下面一些东西:
  对照原来的access,改写下面的部分:
(1)sql数据库表是没有自动字段的,因此原来access中的自动字段被转换成了普通字段,需要手工改成标识类型,增量为1。
(2)所有的时间字段,如果定义了默认值,那么原来肯定是now(),需要改成getdate()
(3)原来字段的默认值一般都不会自动引入,需要对照原表的字段手工添加。
(4)由于数据库的不同,access和sql的字段类型很多转换后就变化了,比如原来的《是否》字段会被转换成bit或者int,备注字段被转换成longtext,text字段转换成varchar等等,一般来说不会影响程序运行,如果有问题,我们在下面的程序改写部分再说。
(5)如果你要用一个For SQL的程序,里面用到了存储过程,那么你应该有这个程序本身建立SQL数据库的方法:有其本身的SQL数据库文件,或者sql脚本;如果没有的话,采用导入access数据库的方式是无法建立存储过程的,这样你最好放弃这个For SQL的程序版本,使用同样版本的For Access的程序,导入access数据库,然后用下面的改写方法自己改成SQL版本的程序。

三、连接字符串的改写

  可参考动网的这段,分别是针对access和SQL的

Dim ConnStr
If IsSqlDataBase = 1 Then
'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 & ";"
Else
'免费用户第一次使用请修改本处数据库地址并相应修改data目录中数据库名称,如将dvbbs6.mdb修改为dvbbs6.asp
Db = "data/fengerqingqing.mdb"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)
End If
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr

当然你使用SQL的话,有关access的使用语句可以删除,就是else后面到on error resume next前面,变成这样:

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

也可以简洁一些,写成这样:

Set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider = Sqloledb; User ID = sa; Password = 1234567; Initial Catalog = dvbbs7; Data Source = (local);"

里面的数据库名称、数据源、用户、密码根据自己的实际情况改写一下。

标签:论坛,access,sql
0
投稿

猜你喜欢

  • Matlab实现新冠病毒传播模拟效果

    2022-01-23 00:01:28
  • mysql索引失效的五种情况分析

    2024-01-24 16:27:22
  • Python绘制组合图的示例

    2023-07-30 01:34:31
  • python实现机械分词之逆向最大匹配算法代码示例

    2022-01-02 08:16:27
  • Golang中interface的基本用法详解

    2023-07-14 17:00:33
  • Python序列对象与String类型内置方法详解

    2023-09-22 13:25:18
  • BootStrap selectpicker

    2024-02-27 02:19:28
  • 在ASP.NET 2.0中操作数据之十二:在GridView控件中使用TemplateField

    2023-07-07 07:02:50
  • Thinking XML: 创建 XML 的好建议

    2008-05-29 11:25:00
  • python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例

    2023-10-09 05:33:38
  • Python回文字符串及回文数字判定功能示例

    2022-05-09 21:59:30
  • Python基于pyopencv人脸识别并绘制GUI界面

    2023-03-24 23:09:50
  • 在图片上显示左右箭头类似翻页的代码

    2024-04-19 09:48:20
  • Python pip替换为阿里源的方法步骤

    2023-07-19 15:39:23
  • asp连接access、sql数据库代码及数据库操作代码

    2023-07-07 13:37:26
  • Golang语言如何避免空指针引发的panic详解

    2024-05-29 22:07:59
  • python pygame实现五子棋小游戏

    2021-10-31 13:39:23
  • 解决python2.7 查询mysql时出现中文乱码

    2024-01-14 18:34:57
  • 原生javascript AJAX 三级联动的实现代码

    2024-04-18 10:00:46
  • ASP+Access数据库安全设置方法小结

    2011-04-02 11:09:00
  • asp之家 网络编程 m.aspxhome.com