文章編號: 316989 - 上次校閱: 2007年9月21日 - 版次: 5.6

建立從 ASP.NET 到 SQL Server 的受信任資料連線時,出現錯誤訊息:使用者 'AccountName'登入失敗

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

徵狀

當您建立從 Microsoft ASP.NET 到 Microsoft SQL Server 的受信任連線時,可能會收到下列錯誤訊息:
使用者 'MachineName\ASPNET 登入失敗
在執行 Internet Information Services (IIS) 6.0 的電腦上,您可能會收到下列錯誤訊息:
使用者 'NT AUTHORITY\NETWORK SERVICE' 登入失敗
注意 當您使用整合式安全性 (在連接字串中加入 integrated security=sspi 屬性) 時,會分別收到其中一個錯誤訊息。

發生的原因

當您使用 ASP.NET 時,Aspnet_wp.exe (若應用程式在 IIS 6.0 上執行,則為 W3wp.exe) 和 SQL Server 要求的預設安全性內容為 ASPNET 帳戶 (若應用程式在 IIS 6.0 上執行,則為 NetworkService 帳戶)。根據預設,ASPNET 帳戶 (若應用程式在 IIS 6.0 上執行,則為 NetworkService 帳戶) 不具 SQL Server 中的任何使用權限,因此,無法存取資料庫。

解決方案

如果要解決這個問題,請使用下列其中一個方法:
  • 方法 1 以程式設計的方式,將 ASP.NET 背景工作處理序的安全性內容變更為具有正確 SQL Server 使用權限的使用者。
  • 方法 2 變更 ASP.NET 的預設設定,使 ASP.NET 背景工作處理序在具有正確 SQL Server 使用權限的使用者內容下啟動並執行。
  • 方法 3 授與 SQL Server 的正確使用權限,使 ASPNET 帳戶 (若應用程式在 IIS 6.0 上執行,則為 NetworkService 帳戶) 具有適當的存取權限存取必要資源。

    注意 這個方法會讓伺服器上的所有 Web 應用程式,都具有執行 SQL Server 之電腦上的對應權限。

狀況說明

這是原本設計的作法。

其他相關資訊

重現問題的步驟

  1. 在執行 ASP.NET 和 SQL Server 的電腦上,建立新的 Microsoft Visual Basic .NET Web 應用程式。
  2. 將下列程式碼加入使用專案所建立之 Webform1.aspx 頁面的 Page_Load 事件中:
    Dim con As New System.Data.SqlClient.SqlConnection("data source=localhost;integrated security=sspi;database=northwind")
     con.open()
     con.close()
  3. 建置專案,然後在瀏覽器中開啟 Webform1.aspx 頁面。
  4. 您會收到<徵狀>一節所描述的錯誤訊息。

?考

如需有關如何以程式設計方式變更 ASP.NET 背景工作處理序之安全性內容的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
306158? (http://support.microsoft.com/kb/306158/ ) 如何在 ASP.NET 應用程式中實作模擬
307002? (http://support.microsoft.com/kb/307002/ ) PRB:ASP/ODBC/SQL Server 錯誤 0x80040E4D 使用者 '(Null)' 的登入失敗
253500? (http://support.microsoft.com/kb/253500/ ) PRB:從 ASP 連接至 SQL Server 時,發生「用戶端無法建立連接」錯誤訊息
306586? (http://support.microsoft.com/kb/306586/ ) PRB: Troubleshooting Error 80004005 "Login Failed" in ASP
247931? (http://support.microsoft.com/kb/247931/ ) 在 Active Server Pages 中連線至 SQL Server 的驗證方法
315158? (http://support.microsoft.com/kb/315158/ ) FIX:ASP.NET 無法使用網域控制站上的預設 ASPNET 帳戶
824308? (http://support.microsoft.com/kb/824308/ ) BUG:IWAM Account Is Not Granted the Impersonate Privilege for ASP.NET 1.1 on a Windows 2000 Domain Controller with SP4
如需有關如何變更 ASP.NET 安全性內容之預設設定的詳細資訊,請造訪下列 Microsoft Developer Network (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/ms978378.aspx (http://msdn2.microsoft.com/en-us/library/ms978378.aspx)
如需有關如何將 ASPNET 帳戶新增至 SQL Server 的詳細資訊,請參閱《SQL Server 線上叢書》中的<新增 Windows 使用者或群組>主題。

這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.1
  • Microsoft ADO.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft ADO.NET 2.0
關鍵字:?
kberrmsg kbfaq kbhttpruntime kbnofix kbprb kbsecurity KB316989
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。