2012-07-20 52 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