我在IIS上運行傳統的ASP和使用下面的代碼有一個腳本來創建一個SQL Server數據庫的連接:SQL Server返回空記錄ADODB.Connection
Dim adoConn As Object
adoConn = Server.CreateObject("ADODB.Connection")
adoConn.Open ("Provider=SQLOLEDB; Data Source=localhost; Initial Catalog=Engineering_Test; User ID=*********; Password=*******")
我然後運行SQL查詢選擇關閉此連接如下:
Dim rs As Object
rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT [User ID] FROM [Users] WHERE [Username]='" & username & "' AND [Password]='" & password & "'"
rs.Open(SQL, adoConn, 3, 3)
所有工作正常,但後來我發現我有很多的服務器上睡眠的進程,並已開始拒絕連接,因爲我大概已經刷爆了所有允許連接到服務器。實際上,我在屏幕上看到的是我的SQL查詢返回空記錄集,實際上它們應該包含多行。
因此我殺死了服務器上的所有睡眠進程,重新啓動SQL Server和IIS,但是,我正在執行的SQL查詢仍然返回空記錄集,沒有顯示任何錯誤,並且按預期編譯了所有內容。
當我使用遠程桌面登錄到服務器並在SQL Server Management Studio中執行完全相同的查詢(通過相同的用戶憑據訪問)時,查詢返回完整的記錄集。
還有什麼我可以做/檢查解決這個問題?這真是讓我莫名其妙!
關於你的空記錄集問題,在'SET NOCOUNT ON;'help的前面加上你的語句前綴? – 2012-01-12 11:24:31
不,不幸的是,它仍然返回一個空記錄集,現在rs.RecordCount的值等於-1而不是0 – user1145348 2012-01-12 11:44:11
檢查如果您使用的SQLOLEDB驅動程序已安裝與您的SQL Server 2000安裝相對應服務器,如果沒有,則使用適當的本地客戶端驅動程序在某些情況下,如果不使用正確的驅動程序,我會報告奇怪的行爲 – Rafael 2012-01-12 15:00:36