0

如果这不是发布此内容的好地方,我们深表歉意,但是我们在 SQL 2005 实例上运行的 Web 应用程序遇到了一些非常奇怪的事情。

该应用程序是一个 .net 网络应用程序,并且会按照您所期望的全天进行大量查询。

但我们会间歇性地收到诸如异常消息之类的错误:*DataBinding: 'System.Data.DataRowView' 不包含名为 'column_name'* 的属性。当它在查询中显然确实有该列时-如果手动运行则可以正常工作..这是SQL实例的症状可能是内存不足还是通常很差?

当然,我们无法跟踪代码中的任何问题!

不幸的是,Web 应用程序和 SQL 实例都在同一个盒子上,这是一个具有 4GB 内存的 Xeon,所以绝不是超级强大..

附言。它不仅像上面那样的查询似乎失败了,而且还有一些 linq-to-sql 的东西,实际上它经历了根本不喜欢数据库的阶段.. 任何帮助/建议都会很高兴收到

谢谢

纳特

一些代码..看不出下面有什么问题..但上面的例外基本上是说找不到列a或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

它如何从一个明显有效的查询中返回行,然后在它刚刚抓取的列上抛出一个 indexoutofrange ? 我认为真正的问题是我们遇到的所有问题都与代码无关.. db 似乎经历了一段时间的不稳定,我们遇到了一些似乎没有意义的奇怪异常。这可能与资源有关,例如盒子动力不足,还是..?

4

1 回答 1

2

您正在发出 Conn.Close 所以我认为记录集已断开连接。但是,db 库的游标位置决定了是在执行时还是在获取时提取行,这可以是 db-session-level 或 connection-level 设置。

由于隐式处于服务器端分页模式,连接池或其他一些并行行为是否有可能导致您的记录集无法获取?

尝试在使用数据集时保持连接打开,如果解决了问题,那么你就知道要继续吠叫这棵树。

于 2012-07-20T08:29:11.180 回答