2012-07-20 113 views
0

道歉,如果這不是一個好的地方發佈這個,但我們遇到了一些非常奇怪的事情與我們的Web應用程序在SQL 2005實例上運行。Web應用程序拋出奇怪的sql錯誤

該應用程序是一個.net網絡應用程序,並且可以像您期望的那樣在一天中進行多次查詢。

但是間歇性地我們得到錯誤,例如Exception消息:* DataBinding:'System.Data.DataRowView'不包含名爲'column_name'*的屬性。當它顯然確實有查詢中的那一列 - 如果用手工運行的話可以很好地工作......這是SQL實例的一個症狀,可能是內存不足或者通常很糟糕?

當然我們不能跟蹤代碼中的任何問題!

遺憾的是無論是Web應用程序和SQL實例都在這與RAM 4GB的至強,所以絕不尤伯杯強大的相同箱..

PS。它不只是像上面這樣的查詢似乎崩潰了,但一些LINQ到SQL的事情,事實上,它經歷了所有不喜歡數據庫的階段..任何幫助/建議將愉快地收到

感謝

NAT

一些代碼..無法看到什麼毛病下面..但上述異常基本上是說不能找到列或b或C ...

Dim conn As New SqlConnection(sitedb) 
    Dim cmd As New SqlCommand 
    cmd.CommandText = "SELECT a,b,c FROM Table" 
    Dim da As New SqlDataAdapter(cmd) 
    Dim dt As New DataTable 

    Try 
     conn.Open() 

     da.Fill(dt) 

    Catch ex As Exception 
     Throw ex 
    Finally 
     conn.Close() 
    End Try 

    if dt.Rows.Count > 0 then 
     Grid.DataSource = dt **<- dies here....** 
     Grid.DataBind() 
    end if 

如何它是否可以從查詢中返回行清楚地工作,然後在其剛剛抓住的列上拋出索引範圍? 我認爲真正的問題是,我們遇到的問題都不是代碼相關的。數據庫似乎要經歷一段時間的投擲,我們經歷了一些似乎沒有道理的奇怪例外。這可能是與資源有關的,如果箱子動力不足,或者..?

+0

無代碼,您如何期待我們的幫助? – 2012-07-20 07:56:45

+0

請向我們展示查詢和數據綁定 – HatSoft 2012-07-20 07:59:21

+0

作爲您的異常狀態,請檢查您的DataTable,不管它是否具有該列。 – 2012-07-20 08:00:40

回答

2

您正在發佈Conn.Close,因此我認爲記錄集已斷開連接。但是,數據庫庫的光標位置決定了在執行時間還是獲取時間時行被拉取,並且這可以是db會話級別或連接級別設置。

連接池或其他某些並行行爲是否有可能導致您的記錄集因爲隱式地處於服務器端分頁模式而無法讀取?

嘗試在使用數據集的同時保持連接處於打開狀態,如果解決了這個問題,那麼您就知道要繼續吠叫這棵樹。

+0

所以你建議在應用程序中關閉連接池 - 通過連接字符串可能 - 有一段時間,看看如何執行? – nat 2012-07-20 08:32:34

+0

@nat我想也許你需要嘗試在'Try'內移動'.Bind()'代碼,而不是'Try..Catch..Finally'之後...... – 2012-07-20 08:33:42

+0

@nat我建議你根據tgat正在運行的設置,過早關閉連接。顯式設置光標位置,或者在關閉連接之前綁定/使用行。 – ErikE 2012-07-20 08:37:27