我有一个 ASP.NET 应用程序,DotNetNuke
在我的大学中用于学生管理。
有时,在生成一些长时间运行的报告时,应用程序会抛出如下错误:
DataBinding:“System.Data.DataRowView”不包含名为 XXXX 的属性
哪里XXX
可能不一样。
我必须强调所有这些属性(似乎找不到)都存在,并且它们是由存储过程生成的(在 Sql Management Studio 中查询时)。代码在 95% 的情况下都可以工作,但是在生成报告时,它会停止工作......
重新编译或应用程序重新启动后,一切似乎都正常工作(直到我再次生成一些报告)。
该DotNetNuke
站点可能一直都可以成功访问,而我的模块会抛出以前的异常。所有抛出错误的模块都是使用SqlServerDataSource
. 我指定了一个e.Command.CommandTimeout = 60;
但是......没有运气。我们的应用程序使用ObjectDataSource
,SqlDataSource
和代码隐藏数据绑定。这些错误似乎只出现在使用的页面中,SqlDataSource
而不出现在使用ObjectDataSource
或代码隐藏数据绑定的页面中。
为了解决机器上的这个“谜团”,我们创建了另一个实例,我们在其中移动了用于密集型和大型报告(如数据仓库)的表。对于本例,我们还安装了 Reporting Services。
因此,使用了 SQL 2005:
- 实例 1:主要生产数据库 + Reporting Services 实例 1,用于简单报表
- 实例 2:用于报告活动的数据库 + 用于大型报告的 Reporting Services 实例 2
我们还使用 1222 标志检查了死锁,但是当错误开始发生时,两个实例的日志中都没有死锁(实际上没有错误或警告)。
此外,主应用程序和两个报告服务实例都有单独的应用程序池。
服务器规格:
- 操作系统:Windows 2003 R2,64 位
- SQL Server 2005 标准版,64 位
- 8 GB 内存
- 英特尔至强 E 5345 2.33 Ghz(2 个四核)