中国网络-ITPro俱乐部's Archiver

跃跃领舞 发表于 2007-1-23 08:34

KB169377:如何在 Active Server Pages 中访问 SQL Server

概要
本文介绍如何使用 ActiveX 数据对象 (ADO) 在 ASP 脚本中建立到 SQL Server 的连接,同时利用 ODBC 3.0 的连接池功能。


更多信息
连接池
启用 ODBC 连接池。
有关连接池的其他信息以及有关如何启用连接池功能的说明,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
164221 ([url]http://support.microsoft.com/kb/164221/)[/url] INFO:如何在 ODBC 应用程序中启用连接池
ODBC DSN
使用“ODBC 管理器”,在安装了 Microsoft Internet Information Server (IIS) 的计算机上创建一个系统数据源名称 (DSN)。指定一次连接属性,然后在每个页面上重新使用此属性。例如,在 Global.asa 文件的“Session_OnStart”事件中,将连接属性定义为:    Session("ConnectionString") =
   "dsn=SQLSysDSN;uid=<username>;pwd=<strong password>;DATABASE=pubs;APP=ASP Script"                               
确保满足下列所有条件:• “系统 DSN”定义中没有选中“受信任连接”框。
• SQL Server 安全模式不是“Windows NT 集成”。  
• 在连接属性中,uid 不为空。  
否则,到 SQL Server 的连接可能会失败,并收到以下错误消息:


Microsoft OLE DB provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed- User:_
Reason: Not defined as a valid user of a trusted SQL Server connection.


Global.asa
是否使用 Global.asa 文件是可选的。在其位置上,在此文件中创建的条目通常可以放到应用程序调用的第一页上。假定 ASP 脚本位于一个在“Internet 服务管理器”中没有定义为虚拟目录的文件夹中,而是位于另一个虚拟目录下面,那么包含 Session 变量和 DSN 定义的 Global.asa 文件就必须保留在该虚拟目录中。否则,将收到以下错误消息:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no
default driver specified



ASP 脚本中的连接
通过打开和关闭到每个 Active Server Pages 上的数据库的连接来利用连接池。要打开该连接,请在页面的 <Body> 部分中键入以下语句:   <%
   Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
   OBJdbConnection.Open Session("ConnectionString")   %>                               
要关闭该连接,请直接将以下内容放到 </Body> 标记后:    <%
   OBJdbConnection.Close
   Set OBJdbConnection = Nothing
   %>                               
如果没有按照本文前面介绍的那样正确定义连接设置,您可能会收到以下两条错误消息:


Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][DBNMPNTW]Connection broken.
- 或者 -

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver]Communication link failure

此处是一个包含 Global.asa 和 Authors.asp 文件的示例应用程序。此示例应用程序将返回名为“authors”的“pubs”表中的四列和所有记录。

注意:您必须先将 UID <username> 和 pwd =<strong password> 更改为正确的值,然后才能运行此代码。请确保该 UID 具有在数据库中执行此操作所需的适当权限。

Global.asa    <SCRIPT LANGUAGE=VBScript RUNAT=Server>
   Sub Session_OnStart
   Session("ConnectionString") =
   "DSN=SQLSysDSN;UID=<username>;PWD=<strong password>;DATABASE=pubs;APP=ASP script"
      Session("ConnectionTimeout") = 15
      Session("CommandTimeout") = 30
   End Sub

   Sub Session_OnEnd

   End Sub
</SCRIPT>                               
Authors.asp   <HTML>
   <HEAD>
   <TITLE>All Authors</TITLE>
   </HEAD>
   <BODY BGCOLOR="#FFFFFF">

   <% Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
   OBJdbConnection.ConnectionTimeout = Session("ConnectionTimeout")
   OBJdbConnection.CommandTimeout = Session("CommandTimeout")
   OBJdbConnection.Open Session("ConnectionString")
   Set SQLStmt = Server.CreateObject("ADODB.Command")
   Set RS = Server.CreateObject ("ADODB.Recordset")
   %>

   <p>
   <table border="0" bordercolor="#000000">
   <%
   SQLStmt.CommandText = "select * from authors"
   SQLStmt.CommandType = 1
   Set SQLStmt.ActiveConnection = OBJdbConnection
   RS.Open SQLStmt

   Do While Not RS.EOF
   %>
   <TR>
      <TD Width = 150 ALIGN=LEFT>
         <FONT SIZE=+1>
         <%= RS("au_id") %>
         </FONT></TD>
      <TD></TD>
         <TD Width = 150 ALIGN=LEFT>
         <FONT SIZE=+1>
         <%= RS("au_lname")  %>
         </FONT></TD>
      <TD Width = 150 ALIGN=LEFT>
         <FONT SIZE=+1>
         <%= RS("au_fname")  %>
         </FONT></TD>
      <TD Width = 150 ALIGN=LEFT>
         <FONT SIZE=+1>
         <%= RS("phone")  %>
         </FONT></TD>
   </TR>
   <%
   RS.MoveNext
   Loop
   %>
   </table>
   <hr>
   <p>
   </BODY>
   <% OBJdbConnection.Close
   Set OBJdbConnection = Nothing
   %>
</HTML>                               
有关 Active Server Pages 的更多信息,请参见 IIS 服务器上 ASP 安装程序提供的路径图 (Roadmap)。


参考
如果您没有看到您问题的答案,请访问 Microsoft SQL Server 新闻组,地址是:
Microsoft SQL Server 新闻组 ([url]http://www.microsoft.com/technet/community/newsgroups/server/sql.mspx)[/url]
如果您想对本文或其他 Microsoft SQL Server 知识库文章发表评论,请给我们发邮件,地址是: Q169377 (mailto:sqlkb@microsoft.com?Subject=Q169377)



--------------------------------------------------------------------------------

这篇文章中的信息适用于:
• Microsoft SQL Server 2000 标准版
• Microsoft SQL Server 7.0 标准版
• Microsoft SQL Server 6.5 标准版
• Microsoft SQL Server 6.0 标准版
• Microsoft SQL Server 4.21a 标准版
• Microsoft Internet Information Server 4.0
• Microsoft Internet Information Server 3.0
• Microsoft Internet Information Services 5.0
• Microsoft SQL Server 2005 Standard Edition
• Microsoft SQL Server 2005 Express Edition
• Microsoft SQL Server 2005 Developer Edition
• Microsoft SQL 2005 Server Enterprise
• Microsoft SQL 2005 Server Workgroup



关键字:  kbenv kbhowto kbinterop kbtshoot KB169377


Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.