|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。server|程序|成绩 MicrosoftSQLServer7.0是一种年夜型、散布式数据库体系,也可被以为是一种年夜型、散布式数据堆栈。因为其与
WindowsNT和BackOffice和VisualStudio具有严密的共同,已被愈来愈多的收集使用体系所接纳。而ASP程序也以其和
NT的严密毗连,可以使用ActiveX工具、CGI接口工具化等特性向CGI程序倡议了无力的应战。上面,就谈谈开辟毗连远程SQL
Server的ASP程序应注重的几个成绩。
SQLServer是一个非常注意平安性的数据库,出格是在7.0版本公布今后,能够将数据库的允许间接授与WindowsNT用
户,数据库脚色也能够包含NT用户或组及SQLServer旧版本的用户和脚色。别的,分离MicrosoftProxyServer,则必
须经由过程代办署理服务器才干在Internet上会见SQLServer,如许更确保了数据的平安。
在毗连计划上,可选择TCP/IP套接字和定名管道的办法会见。具有NT用户帐号的用户合适于接纳定名管道的办法,没
有NT用户帐号的用户则不合适用此办法.。这是由于在创建毗连之前,数据库用户必需被NT确认,而选择TCP/IP套接字的连
接则无此限定,该毗连可间接连到数据库服务器,不用经由过程利用定名管道的两头盘算机,只需经由过程了SQLServer确认用户
便可取得会见权。
因为是编写数据库毗连的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数据源办理员”对话框当选
取“体系数据源称号”选项后,拔取“SQLSERVER”便可。若无“SQLSERVER”,则先增加,再拔取便可。如许,即便我
们要变动数据库,也不用修正程序中的ODBC参数,只需从头设置体系的DSN便可。
计划ASP程序毗连SQLSERVER的另外一个主要成绩是完成对SQLSERVER的存取把持。因为在干系型数据库中,DBMS自己的
DCL言语只撑持对表和字段的存取把持,而不间接撑持对表中纪录供应平安性回护。为完成其平安性,同时又不掉B/S布局
的开放性,能够思索接纳利用两头层存取程序逻辑分离触发器的体例来完成。利用两头层存取程序即用户端程序不间接访
问DBMS,而是经由过程一其中间层的存取程序。以网上BBS使用于为例,用户查询时,存取程序把表中的全体纪录前往给用户;
用户拔出纪录时,存取程序在新纪录的User_name字段填写以后用户名,标明纪录的仆人,当用户删除和修正纪录时,存取
程序依据User_name字段向用户前往只属于他本人的纪录,并同意用户从本人的纪录当选择举行操纵。利用触发器的体例则
是一切用户间接会见表,但在表上创建以下的触发器:
CREATETRIGGERtrigger_1ontable_1FORINSERTAS
BEGIN
IFEXITS(SELECT*FROMinsertedWHEREUser_nameUser_name())
BEGIN
ROLLBACKTRANSACTION
RAISERROR(请输出准确的用户名,16,-1)
END
END
CREATETRIGGERtrigger_2ontable_1FORUPDATE,DELETEAS
BEGIN
IFEXITS(SELECT*FROMdeletedWHEREUser_nameUser_name())
BEGIN
RAISERROR(你不克不及修正别人的数据,16,-1)
END
END
在下面的程序中,trigger_1关于用户名不准确的用户的拔出哀求予以反对。trigger_2关于试图修正别人的纪录的请
示予以反对。因为触发器附着在SQLServer的基础表中,不管用户经由过程何种体例更新纪录,都没法跳过触发器的反省,因
此利用触发器完成的平安性是相称高的。但因为在表中只能界说针敌手稿删除和修正的触发器,不克不及界说针对查询的触发
器,因而,要完成对查询的存取把持,则要经由过程两头层存取程序,只要向用户查询叨教前往特定前提的纪录来完成。
</p>Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。 |
|