该应用程序是一个.net网络应用程序,并且可以像您期望的那样全天进行大量查询。
但间歇性地我们遇到错误,例如Exception消息:* DataBinding:' System.Data.DataRowView'不包含名称为' column_name' *的属性。当它显然在查询中有该列时 - 如果手动运行工作正常..这是一个SQL实例的症状可能是内存不足还是只是一般很差?
当然我们无法跟踪代码中的任何问题!
不幸的是,Web应用程序和SQL实例都在同一个盒子上,这是一个4GB ram的Xeon,所以绝不是超级强大的..
PS。它不仅仅是上面的查询似乎已经失败了,而是一些linq-to-sql的东西,实际上它经历了不喜欢DB的阶段......任何帮助/建议都会很高兴收到
感谢
NAT
一些代码..无法看到下面的任何问题..但上面的例外基本上是说找不到列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? 我认为真正的问题是我们遇到的问题都不是代码相关的......数据库似乎经历了一些投掷摇摆的事情,我们遇到了一些似乎没有意义的奇怪异常。这可能是资源相关的,如果盒子功能不足,还是......?
答案 0 :(得分:2)
您正在发布Conn.Close,因此我假设记录集已断开连接。但是,db库的游标位置确定是在执行时还是在获取时拉取行,这可以是db-session-level或连接级设置。
由于隐式处于服务器端分页模式,是否有可能连接池或某些其他并行行为导致您的记录集无法被提取?
尝试在使用数据集时保持连接打开,如果解决了这个问题,那么你就会知道继续咆哮这个树。