我最一段簡單的VB.NET代碼有一個很奇怪的問題:SqlDataReader的不讀所有記錄
Public Sub ReadIDs(i_oDataReader As Data.SqlClient.SqlDataReader)
m_aFullIDList = New Generic.List(Of Integer)
While i_oDataReader.Read
If i_oDataReader.IsDBNull(0) = False Then
m_aFullIDList.Add(i_oDataReader.GetInt32(0))
End If
End While
m_iTotalNumberOfRecords = m_aFullIDList.Count
End Sub
基本上過程接受一個DataReader作爲參數,環路直通的所有記錄讀取器,將它們添加到整數的通用列表中。
當讀取器後面的SQL存儲過程返回相對少量的記錄(低於100K)時,讀取器將讀取所有記錄,並且最終計數與結果集匹配。但是當記錄數量超過100萬時 - 結果變得不可預測。
E.g.當我知道SP會回覆1.5M的記錄 - 通用列表中的記錄的最終計數可能是200K,500K等。
任何想法是什麼導致它以及如何解決它?謝謝!
什麼樣的應用程序,ASP.NET或其他多線程類型? –
感謝您的及時迴應。事實上,ASP.NET。 –
在調試時還是僅在生產時是否可重現?什麼是靜態(共享)像連接?你有例外嗎? –