您目前已離線,請等候您的網際網路重新連線

如何在 Active Server Pages 中存取 SQL Server

Extended support for SQL Server 2005 ends on April 12, 2016

If you are still running SQL Server 2005 after April 12, 2016, you will no longer receive security updates and technical support. We recommend upgrading to SQL Server 2014 and Azure SQL Database to achieve breakthrough performance, maintain security and compliance, and optimize your data platform infrastructure. Learn more about the options for upgrading from SQL Server 2005 to a supported version here.

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



其他相關資訊

連接共用

啟用 ODBC 連接共用。
如需有關連接共用的詳細資訊,以及如何啟用此功能的指示,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
164221INFO: 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 知識庫」文件有任何意見呢?請來信 Q169377 表達您的意見
browser explorer web sqlfaqtop
內容

文章識別碼:169377 - 最後檢閱時間:05/15/2011 21:32:00 - 修訂: 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
意見反應