PRB:從 ASP 連接至 SQL Server 時,發生「用戶端無法建立連接」錯誤訊息


徵狀


以 Active Server Pages (ASP) 程式碼從 Web 伺服器開啟與位於不同電腦之 SQL Server 的連接時,可能會出現類似下列其中一個錯誤訊息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver]Client unable to establish connection
/asppage.asp, line xxx (Microsoft OLE DB Provider for ODBC 驅動程式錯誤 '80004005' [Microsoft][ODBC SQL Server Driver]用戶端無法建立連接 /asppage.asp,第 xxx 行)
- 或 -
Microsoft OLE DB Provider for SQL Server error '80004005'
[DBNMPNTW]ConnectionOpen (CreateFile()).
/asppage.asp, line xxx (Microsoft OLE DB Provider for SQL Server 錯誤 '80004005' [DBNMPNTW]ConnectionOpen (CreateFile())。/asppage.asp,第 xxx 行)
- 或 -
Microsoft OLE DB Provider for ODBC Drivers error '80040ed'
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'NT Authority\Anonymous Logon'.
/asppage.asp, line xxx (Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80040ed' [Microsoft][ODBC SQL Server Driver][SQL Server]使用者 'NT Authority\Anonymous Logon' 的登入失敗。/asppage.asp,第 xxx 行)

發生的原因


如果 SQL Server 安全性模式是設定為僅限 Microsoft Windows NT,並且要用來驗證 IIS 電腦之使用者的 NT 帳戶 (例如用於匿名 IIS 存取的 IUSR_computer) 沒有權限可以連接至遠端 SQL Server 的 NT 電腦,就會發生這個錯誤。

解決方案


使用 IIS 匿名存取
  1. 使用 NT 的「使用者管理員」工具,在遠端 SQL Server 的 NT 電腦上建立完全相同的 NT 帳戶,例如 IUSR_localcomputer。為帳戶設定類似的密碼,並授與帳戶「本機登入」的權限。
  2. 使用 [Internet 服務管理員],開啟 Web 應用程式中虛擬目錄的 [屬性工作表],選取 [目錄安全設定] 索引標籤,並按一下 [匿名存取及驗證控制][編輯] 按鈕以顯示 [驗證] 方法。按一下 [允許匿名存取][編輯] 按鈕,以編輯用於匿名存取的 NT 帳戶,然後清除 [啟用自動密碼同步] 核取方塊。按一下 [確定] 以關閉對話方塊並儲存變更。

    這個第二個步驟是必要的,因為 NT 發生帳戶委派問題。
使用 IIS 基本驗證
  1. 使用者使用對 NT 伺服器 (具有 IIS) 而言是本機的帳戶登入 IIS 時,如果瀏覽器提示使用者提供名稱和密碼,請參閱前述的步驟。
  2. 如果使用者使用網域帳戶登入,並且 IIS 的 NT 電腦和 SQL Server 都位於相同的網域,請確定帳戶在 SQL Server 的 NT 電腦上具有直接或間接「從網路存取這台電腦」的權限 (根據指派給該帳戶所屬群組的權限)。

参考


下列 Microsoft 網站為網際網路開發人員提供有關設定安全性的資訊: