我想在本地機器上設置一個用ASP Classic編寫的遺留站點。我正在使用SQL Server 2008和IIS版本7.5。經典ASP - Ado記錄集打開()
我在嘗試打開到數據庫的連接時遇到錯誤。
使用建議使用.udl文件來創建和測試我的連接字符串,所以我知道在連接字符串作品。我正在使用Windows身份驗證,並且我確信運行此站點的應用程序池可以訪問數據庫,因爲我爲多個站點使用相同的池,並且它們都可以正常連接。
打開連接時,我試圖運行一個存儲過程,如果我只寫出存儲的proc字符串並直接在我的數據庫中運行,它將按預期工作。
下面是代碼:
Const adUseClient = 3
Const adCmdStoredProc = 4
Const adOpenStatic = 3
Const adLockBatchOptimistic = 4
dim connectstring,sql
connectstring = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=my-database;Data Source=(local)\SQLEXPRESS"
sql = "MyProc '" & param1 & "','" & param2 & "'"
set rs = Server.CreateObject("ADODB.RecordSet")
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockBatchOptimistic
' this is where it is failing
rs.Open sql, connectstring, 3
其中的一個問題是我得到的錯誤似乎是由IIS產生,它只是說:處理URL時服務器上出現
錯誤。請聯繫系統管理員。
如果您是系統管理員,請點擊此處瞭解有關此錯誤的更多信息。
當我點擊「單擊此處」鏈接時,我會看到有關在IIS 7上運行ASP Classic網站的常規頁面,但找不到與我的錯誤相關的任何內容。我似乎無法找到從哪裏得到關於錯誤的信息。作爲最後一招,我在事件查看器 - > Windows應用程序日誌中進行了檢查,但沒有發現我的錯誤。
我谷歌搜索,並嘗試連接字符串上的多個排列,但無濟於事。如果有人對如何解決這個問題有什麼建議,甚至是在哪裏尋找解決方案的想法,我將不勝感激。非常感謝!
**編輯:**
好吧,我改變了IIS設置顯示在瀏覽器中的錯誤,現在我收到的錯誤消息是比較有用一點,那就是:
Microsoft OLE DB Provider for SQL Server錯誤'80004005'
無法打開登錄請求的數據庫「rw-gp」。登錄失敗。
現在,當我谷歌搜索這個,我發現這往往是一個權限問題。正如您所看到的,我正在使用Windows身份驗證,並且正在具有連接到數據庫權限的應用程序池下運行該站點。我有多個本地設置的ASP.NET網站,可以在此應用程序池中運行,並且可以使用集成安全性進行連接。我不確定發生了什麼問題,有沒有人有任何建議?
這是一個ASP/IIS問題,而不是SQL Server。另外,你有沒有聽說過由字符串連接引起的SQL注入?或者在SQL Server中引用對象時使用模式限定符? – gbn