如何在 Active Server Pages 中存取 SQL Server

文章翻譯 文章翻譯
文章編號: 169377 - 檢視此文章適用的產品。
本文曾發行於 CHT169377
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您,如何在利用 ODBC 3.0 連接共用 (Connection Pooling) 功能的同時,使用 Active Data Objects (ADO) 在 ASP 指令碼中建立與 SQL Server 的連線。



其他相關資訊

連接共用

啟用 ODBC 連接共用。
如需有關連接共用的詳細資訊,以及如何啟用此功能的指示,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
164221 INFO: How to Enable Connection Pooling in an ODBC Application

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 錯誤 '80004005'
[Microsoft][ODBC SQL Server Driver][SQL Server]使用者:_ 的登入失敗。_
原因: 並非受信任的 SQL Server 連線的有效使用者。

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 (Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005' [Microsoft][ODBC Driver Manager] 找不到資料來源名稱,且未指定預設的驅動程式)

ASP 指令碼中的連線

請在每個動態伺服器網頁上開啟和關閉與資料庫的連線,以善加利用連接共用。如果要開啟連線,請在頁面的 <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 錯誤 '80004005' [Microsoft][ODBC SQL Server Driver][DBNMPNTW]連接中斷)
- 或 -

Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'
[Microsoft][ODBC SQL Server Driver]通訊連結失敗

以下是由 Global.asa 和 Authors.asp 檔案組成的範例應用程式。此範例應用程式將會傳回四個資料行,以及 pubs 資料表中名為 authors 的所有記錄。

注意 在執行這個程式碼之前,您必須先將 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 新聞群組
您是否對本文或其他「Microsoft SQL Server 知識庫」文件有任何意見呢?請來信 Q169377 表達您的意見

屬性

文章編號: 169377 - 上次校閱: 2011年5月15日 - 版次: 11.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 4.21a Standard Edition
  • 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 Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
關鍵字:?
kbsqldeveloper kbenv kbhowto kbinterop kbtshoot KB169377
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com