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

连接池
启用 ODBC 连接池。
有关连接池的其他信息以及有关如何启用连接池功能的说明,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
164221 INFO:如何在 ODBC 应用程序中启用连接池

ODBC DSN

使用“ODBC 管理器”,在安装了 Microsoft Internet Information Server (IIS) 的计算机上创建一个系统数据源名称 (DSN)。指定一次连接属性,然后在每个页面上重新使用此属性。例如,在 Global.asa 文件的“Session_OnStart”事件中,将连接属性定义为:

  1. Session("ConnectionString") =
  2. "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 上的数据库的连接来利用连接池。要打开该连接,请在页面的 部分中键入以下语句:

  1. <%
  2. Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
  3. OBJdbConnection.Open Session("ConnectionString") %>

要关闭该连接,请直接将以下内容放到 标记后:

  1. <%
  2. OBJdbConnection.Close
  3. Set OBJdbConnection = Nothing
  4. %>

如果没有按照本文前面介绍的那样正确定义连接设置,您可能会收到以下两条错误消息:

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 和 pwd = 更改为正确的值,然后才能运行此代码。请确保该 UID 具有在数据库中执行此操作所需的适当权限。

Global.asa

  1. <SCRIPT LANGUAGE=VBScript RUNAT=Server>
  2. Sub Session_OnStart
  3. Session("ConnectionString") =
  4. "DSN=SQLSysDSN;UID=<username>;PWD=<strong password>;DATABASE=pubs;APP=ASP script"
  5. Session("ConnectionTimeout") = 15
  6. Session("CommandTimeout") = 30
  7. End Sub
  8.  
  9. Sub Session_OnEnd
  10.  
  11. End Sub
  12. </SCRIPT>

Authors.asp

  1. <HTML>
  2. <HEAD>
  3. <TITLE>All Authors</TITLE>
  4. </HEAD>
  5. <BODY BGCOLOR="#FFFFFF">
  6.  
  7. <% Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
  8. OBJdbConnection.ConnectionTimeout = Session("ConnectionTimeout")
  9. OBJdbConnection.CommandTimeout = Session("CommandTimeout")
  10. OBJdbConnection.Open Session("ConnectionString")
  11. Set SQLStmt = Server.CreateObject("ADODB.Command")
  12. Set RS = Server.CreateObject ("ADODB.Recordset")
  13. %>
  14.  
  15. <p>
  16. <table border="0" bordercolor="#000000">
  17. <%
  18. SQLStmt.CommandText = "select * from authors"
  19. SQLStmt.CommandType = 1
  20. Set SQLStmt.ActiveConnection = OBJdbConnection
  21. RS.Open SQLStmt
  22.  
  23. Do While Not RS.EOF
  24. %>
  25. <TR>
  26. <TD Width = 150 ALIGN=LEFT>
  27. <FONT SIZE=+1>
  28. <%= RS("au_id") %>
  29. </FONT></TD>
  30. <TD></TD>
  31. <TD Width = 150 ALIGN=LEFT>
  32. <FONT SIZE=+1>
  33. <%= RS("au_lname") %>
  34. </FONT></TD>
  35. <TD Width = 150 ALIGN=LEFT>
  36. <FONT SIZE=+1>
  37. <%= RS("au_fname") %>
  38. </FONT></TD>
  39. <TD Width = 150 ALIGN=LEFT>
  40. <FONT SIZE=+1>
  41. <%= RS("phone") %>
  42. </FONT></TD>
  43. </TR>
  44. <%
  45. RS.MoveNext
  46. Loop
  47. %>
  48. </table>
  49. <hr>
  50. <p>
  51. </BODY>
  52. <% OBJdbConnection.Close
  53. Set OBJdbConnection = Nothing
  54. %>
  55. </HTML>

适用于:
• 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