今日焦点 焦点资讯 营销之道 企业报道 淘宝运营 网站建设 软件开发 400电话
  当前位置: 首页 » 资讯 » 网站建设 » 正文

网站后台数据库从Access 到SQLServer 的转换

放大字体  缩小字体 发布日期:2013-04-13  浏览次数:168  【去百度看看】
核心提示:用 Access 作为网站后台数据库承担访问量、数据量大的网站应用时, 往往不堪重负, 使用微软的 SQL Server 数据库就是最最有效、
用 Access 作为网站后台数据库承担访问量、数据量大的网站应用时, 往往不堪重负, 使用微软的 SQL Server 数据库就是最最有效、最实用的替代办法。转换过程大致需要三个步骤, 首先进行系统程序的安装, 然后进行数据库的转换, 最后进行数据库运用程序的改写。
 

  目前, 许多小型网站的 ASP 程序使用的都是用 Access 作为后台数据库, 但是 Access 数据库在承担访问量、数据量大的网站应用时, 往往不堪重负。一般而言, 容量超过 50M 的 Access 数据库, 性能就开始明显下降, 超过 100M以后, 出错、运行慢的问题就会更加突出。尽管可以用动态网页程序设计方法, 从程序的角度尽量优化以图提高性能, 但是这不能从根本上解决问题。这时, 使用微软的 SQL Server 数据库就是最好的替代办法之一, 当然也可以使用其它的如 Oracle、My SQL 等等, 但是作为转换来说, 由于同为微软的产品, 改写成 SQL Server 应该是最有效、最实用的办法。

1 如何实现转换

1.1 转换前提

  系统应首先安装好 SQL Server 数据库和 Office 套件里面的Access; 并使用一个支持纯文本编辑并且带有行号显示的编辑器,推荐使用 Ultra Edit, 也可以使用 FrontPage2003。

 1.2 数据库的准备

   一般来说有两种情况:

 1.2.1 程序提供了 SQL 数据库格式: 有一个 MDF 文件, 或者提供了创建 SQL 数据库的 SQL 脚本文件( 后缀名为 SQL) 。

   如果有 MDF 文件, 可以用企业管理器直接附加上, 如果提供的是 SQL 脚本文件, 那么就要先用企业管理器自己创建一个 SQL数据库, 然后数据库用企业管理器中的查询分析器运行这个脚本创建数据库表。这样建立的数据库基本不用再去改写了。

 1.2.2 程序只提供了一个 Access 数据库, 这样你就用企业管理器导入 Access 数据库, 导入后需要改写下面一些东西。

  对照原来的 Access, 改写下面的部分: SQL 数据库表是没有自动字段的, 因此原来 Access 中的自动字段被转换成了普通字段, 需要手工改成标识类型, 增量为 1。

  所有的时间字段, 如果定义了默认值, 那么原来肯定是 now(),需要改成 getdate(), 原来字段的默认值一般都不会自动引入, 需要对照原表的字段手工添加。

  由于数据库的不同, Access 和 SQL 的字段类型很多转换后就变化了, 比如原来的“是/否”字段会被转换成 bit 或者 int, 备注字段被转换成 long text, text 字段转换成 var char 等等, 一般来说不会影响程序运行。

  如果要用一个 For SQL 的程序, 程序里用到了存储过程, 那么应该有这个程序本身建立 SQL 数据库的方法: 有其本身的 SQL数据库文件, 或者 SQL 脚本; 如果没有, 采用导入 Access 数据库的方式是无法建立存储过程的, 这样最好放弃这个 For SQL 的程序版本, 使用同样版本的 For Access 的程序, 导入 Access 数据库,然后用下面的改写方法自己改成 SQL 版本的程序。

2 连接字符串的改写

2.1 对于 Access,可采用如下方法编写程序

 Dim ConnStr

If IsSQLDataBase = 1 Then

 ‘SQL 数据库连接参数: 数据库名、用户密码、用户名、连接名( 本地用local, 外地用IP)

  Dim SQLDatabaseName, SQLPassword, SQLUserName, SQLLocalName

  SQLDatabaseName = “dvbbs7”

  SQLPassword = ””

  SQLUserName = ”(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.CreatObject("ADODB.Connection")

conn.open ConnStr

  2.2 如果要改写成 SQL Server, 有关 Access 的使用语句可以删除, 即从 else 到 on error resume next, 从而变成如下语句:

  Dim ConnStr

  ' SQL 数据库连接参数: 数据库名、用户密码、用户名、连接名( 本地用 local, 外地用 IP)

  Dim SQLDatabaseName,SQLPassword,SQLUsername,SQLLocalName

  SQLDatabaseName =“databasename”

  SQLPassword =“”

  SQLUsername =“sa”

  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 =databasename; Data Source = (local);”

  程序中的数据库名称、数据源、用户、密码, 使用者可以根据自己的实际情况进行修改。

3 程序的改写

  这也有两种情况:

  3.1 若是 For SQL 的程序, 那么如果上述的数据库建立过程没有遇到阻碍, 程序基本就可以运行了; 如果出错, 只可能是程序本身的问题。

  3.2 若程序是 For Access 的, 与 For SQL 的程序差别主要是程序中使用到的 SQL 查询语句。注意, SQL 查询语句是数据库应用中不可缺少的部分, 不管是 For SQL 还是 For Access 的程序使用的语法大体相似, 但也一些细微的差别, 正是这些差别, 造成了程序的不通用, 也是需要修改的主要内容。一般要修改的部分如下:

  时间函数的问题: SQL 数据库的时间函数与 Access 不同, 最常见的是取现在时间的函数, Access 是 now(), SQL 是 getdate()。因此凡是在 where 子句中使用了 now()的地方都要改成 getdate(); 注意, now()函数在 ASP 程序本身也要使用, 凡是不在数据库查询或执行语句中使用的 now()函数一定不能改。

   时间比较函数: datediff(\' d\' ,\' 时间 1\' ,‘时间 2’)这是Access 查询用的格式, SQL 中这些引号都要去掉, 同时时间格式的前后可能加上了 #, 也要去掉。同样这也是指在 SQL 语句中的,在 ASP 语句中的要保持原样。

  空值的表示: 在使用 Access 数据库时, 判断空值一般用是否=“”来表示, 但是这在使用 SQL 数据库时往往出错, 如果遇到出错 的问题或者程序运行不正常,可以改成如这样判断:where(nameis null)

  真假值判断: Access 中可以用=true、=false 来判断, 但是在SQL 中就会出错, 因此在 SQL 查询或执行语句中这类判断要分别 改成=1、=0。注意一点: 有些程序虽然写成=“true”, 但是由于有引 号, 所以这个字段是字符类型的, 不能改成=1, 保持原样即可。

 
 
[ 资讯搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 违规举报 ]  [ 关闭窗口 ]

 
0条 [查看全部]  相关评论

 
网站首页 | 关于我们 | 联系方式 | 使用协议 | 版权隐私 | 网站地图 | 排名推广 | 广告服务 | 积分换礼 | 网站留言 | RSS订阅 | 皖ICP备2021004516号-14
企业800网 · 提供技术支持