当asp在NTFS上遇到Oracle9.02时。。。

Posted on 2006-03-24 08:27  勤奋的蜗牛  阅读(739)  评论(1)    收藏  举报

刚刚完成了一个权限管理的asp后台程序,现做个小结。

技术难点1:SQlServer2000向Oracle9.02迁移问题
1.不能成功连接数据库
       这是在将全部Asp代码编写完成后遇到最大的难题,好像本人遇到的是Oracle9.02版的一个bug,真是郁闷...不知道怎么回事,在家的Oracle安装后,通过
ConnectString="Provider=OraOLEDB.Oracle;data source=ServerName;user id=system;password=system"
set oConn=server.createobject("adodb.connection")
oConn.open ConnectString
没问题,成功连接数据库!
可在单位怎么都不行,后来通过google终于找到了一篇文章讲这是因为Oracle9.02版在NTFS盘上IIS权限不够导致的,的确,由于家中的C盘是FAT32而单位的恰恰是NTFS,找到了原因,再在google中搜索关键字"NTFS+Asp+ Oracle",hoho..解决方法:到Oracle\ora92 打开Ora92的-》属性-》安全,选Authenticated Users 看下面的属性 将Read and Execute 的勾去掉,然后又勾上,确定重新启动机器 ,ok 搞定
在我的机器上已经Perfect了,但后来没想到在服务器上建好数据表后,却怎么也连不上,后来发现,原因是服务器是win2003,由于win2003的IIS是6.0的,而默认状态下,IIS6.0只支持Asp.net,只须在web扩展项增加Asp就OK了!
2.从SQLServer2000向Oracle迁移源程序需要做的改动
      因为比较熟悉SQLServer所以先是在SQLServer2000上搭建了数据库,整个asp程序调试成功后才转到Oracle上。其实从sqlserver2000转到oracle也不是向想象中的那么难,由于最常用的sql语法都是通用的。
     迁移时需要注意的两点:
     其一、Oracle数据库下有方案名,而SqlServer中没有,所以在每个select * from Table 前都必须加上方案名,例如方案名为HR,修改后的sql语句就是 select * from HR.Table
     其二、SqlServer2000中的索引在设计表时就可以定义每次增长1,而在Oracle中与之向对应的是序列,而每次增加1个索引就要使用触发器,不过只有在插入表时才会涉及到这个问题,我个人觉得其实只需在每个要插入表的sql语句中加入 索引字段.NextVal 就可以了,也不需要为每个表建触发器,而且这样的好处是执行效率高。例如原sql语句为 insert into TB_UserInfo (username,sex) Values ('张三','男') 迁移后为 insert into HR.TB_UserInfo (id,username,sex) Values (HR.seq_user_id.NextVal,'张三','男')  ,其中seq_user_id为表TB_UserInfo的序列名。
技术难点2:Asp调试方法
之前没用过asp,所以一开始不知道怎么调,后来发现用vs2003或vs2005都可以调试,而且很方便。
只须在装上vs后.打开IIS管理器