2012-11-27 54 views
1

我試圖讓一個經典的ASP應用程序連接到本地SQL Server 2008數據庫。應用程序和數據庫是由別人構建的。我只是試圖讓他們安裝並運行在我的機器上(Windows 7)。ASP無法連接到SQL Server數據庫

Could not connect to database: 
Error Number: -2147467259 
Error Message: [ConnectionOpen (Connect()).] does not exist or access denied. 

我沒有看到在Windows事件查看器中的任何消息:

當ASP應用程序試圖連接到數據庫的時候,我發現了以下錯誤。我正在查看:事件查看器 - > Windows日誌 - >應用程序。

這是一個新的數據庫安裝使用簡單的恢復。 SQL Server安裝使用默認實例。 SQL Server和Windows身份驗證都是允許的。我保留現有的連接字符串(在ASP代碼中),並嘗試將其添加到我的SQL Server安裝中。這裏是連接字符串:

strConn = "PROVIDER=SQLOLEDB;SERVER=localhost;UID=TheUser;PWD=ThePassword;DATABASE=TheDatabase;" 

要將該用戶添加到SQL Server,我去了SSMS中的安全/登錄並添加了用戶和密碼。我選擇了有問題的數據庫作爲默認數據庫。我認爲這可能會訣竅,但事實並非如此。然後,我進入TheDatabase,然後進入安全。我在那裏添加了一個新用戶,引用了我已經添加到服務器安全中的新用戶。在擁有的架構下,我單擊了db_owner,並在Role Members下檢查了db_accessadmin和db_owner。這些都沒有給ASP應用程序訪問數據庫。有關登錄的sid值在sys.database_principalssys.server_principals中匹配。我可以使用此登錄名登錄SSMS。

應用程式需要對這樣的數據庫進行選擇:

oConn.Execute('select * from someTable') 

我不是一個DBA和我救命稻草幾分把握在這裏。我如何連接這個東西?

感謝, 周杰倫

回答

0

它發生在我在IIS中的SQL Server或網站可能運行與錯誤的權限的用戶。根據我讀的內容,SQL Server可以作爲本地系統運行,所以我只保留這一點。

在IIS中,我的網站使用「應用程序用戶(傳遞身份驗證)」。這在基本設置 - >連接方式(「編輯站點」對話框)中設置。當我點擊「測試設置...」時,在授權旁邊,表示「無法驗證對路徑的訪問權限(c:\mywebsitepath)」。我增加了對該目錄的訪問權限,但這並沒有幫助。在「連接爲」對話框中,然後我將「路徑憑據」更改爲使用「特定用戶」而不是「應用程序用戶(傳遞身份驗證)」。我將它設置爲使用我登錄到我的機器的用戶。之後,當點擊「測試設置...」按鈕時,「授權」旁邊會顯示「路徑可以訪問(c:\mywebsitepath)」。之後,ASP網站就可以很好地連接到SQL Server。

由於連接字符串使用特定的SQL Server用戶名和密碼,我不確定爲什麼這樣可以解決問題,但它似乎有問題。