[MSSQL] 开发连接远程SQLServer的ASP程序应注意的问题

转自:http://www.alixixi.com/WebData/subject20/200512136207402.html


microsoft sql server7.0是一种大型、分布式数据库系统,也可被认为是一种大型、分布式数据仓库。由于其与

windows nt和backoffice以及visual studio具有紧密的配合,已被越来越多的网络应用系统所采用。而asp程序也以其和
nt的紧密连接,可使用activex对象、cgi接口对象化等特点向cgi程序发起了有力的挑战。下面,就谈谈开发连接远程sql
server 的asp程序应注意的几个问题。
  sql server是一个十分注重安全性的数据库,特别是在7.0版本发布以后,可以将数据库的许可直接授予windows nt用
户,数据库角色也可以包括nt 用户或组及sql server旧版本的用户和角色。另外,结合microsoft proxy server ,则必
须通过代理服务器才能在internet 上访问sql server,这样更确保了数据的安全。
   在连接方案上,可选择tcp/ip套接字和命名管道的方法访问。具有nt用户帐号的用户适合于采用命名管道的方法,没
有nt用户帐号的用户则不适合用此方法.。这是因为在建立连接之前,数据库用户必须被nt确认,而选择tcp/ip套接字的连
接则无此限制,该连接可直接连到数据库服务器,不必通过使用命名管道的中间计算机,只要通过了sql server确认用户
就可获得访问权。

  由于是编写数据库连接的asp应用程序,采用的数据访问编程模式当然是ado啦!在ado以前的数据访问编程模式有数据
访问对象dao和远程访问对象rdo,rdodao都是在odbc下开发的,odbc是用c语言编写的基于sql的桌面规程。相反,ado是在
一种新型的规程ole
db下开发的,ole db可以被看作是ole技术在数据库中应用。它是基于c++开发的,给odbc的功能提供了标准化的com接
口。c++是面向对象的,因此ado也具有面向对象的特性。并能通过一系列com接口来扩展自己。这一点对于asp程序来说,
实在是太重要了。我们知道asp程序使用的vbscript脚本语言的功能是很弱的,若要扩充vbscript的能力,使其能访问数
据,则必须创建一个服务器端组件,通过com接口来访问数据,而这正是ado所擅长的。

  在编程连接网络上指定的服务器和数据库时,还必须在web服务器上创建数据源名(dsn)。要设置一个dsn,必须给服
务器提供数据库的名字、通信所用的odbc驱动、以及在网络中的地址。要注意的是:只有设置的dsn为一个系统dsn,才能
让ado在asp中正常工作。如何确定dsn是系统dsn而不是用户或文件dsn呢?很简单,只有对于nt服务器上的所有用户和服务
都可以访问的dsn才是系统dsn。
  设置sql
  server的dsn很简单,只须在有iis或pws的机器上启动“控制面板”的“odbc”,在“odbc数据源管理员”对话框中选
取“系统数据源名称”选项后,选取“sql server”即可。若无“sql server”,则先添加,再选取即可。这样,即使我
们要变更数据库,也不必修改程序中的odbc参数,只需重新设置系统的dsn即可。
  设计asp程序连接sql server的另一个重要问题是实现对sql server的存取控制。由于在关系型数据库中,dbms本身的
dcl语言只支持对表和字段的存取控制,而不直接支持对表中记录提供安全性保护。为实现其安全性,同时又不失b/s结构
的开放性,可以考虑采用使用中间层存取程序逻辑结合触发器的方式来实现。使用中间层存取程序即用户端程序不直接访
问dbms,而是通过一个中间层的存取程序。以网上bbs应用于为例,用户查询时,存取程序把表中的全部记录返回给用户;
用户插入记录时,存取程序在新记录的user_name字段填写当前用户名,表明记录的主人,当用户删除和修改记录时,存取
程序根据user_name字段向用户返回只属于他自己的记录,并允许用户从自己的记录中选择进行操作。使用触发器的方式则
是所有用户直接访问表,但在表上建立如下的触发器:

create trigger trigger_1 on table_ 1 for insert as
begin
if exits(select * from inserted where user_name<>user_name())
begin
rollback transaction
raiserror('请输入正确的用户名',16,-1)
end
end
create trigger trigger_2 on table_1 for update,delete as
begin
if exits (select * from deleted where user_name<>user_name())
begin
raiserror('你不能修改他人的数据',16,-1)
end
end


  在上面的程序中,trigger_1对于用户名不正确的用户的插入请求予以否决。trigger_2对于试图修改他人的记录的请
示予以否决。由于触发器附着在sql server的基本表中,无论用户通过何种方式更新记录,都无法跳过触发器的检查,因
此使用触发器实现的安全性是相当高的。但由于在表中只能定义针对手稿删除和修改的触发器,不能定义针对查询的触发
器,因此,要实现对查询的存取控制,则要通过中间层存取程序,只有向用户查询请示返回特定条件的记录来实现。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值