- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在生产环境中部署了新版本的 ASP.NET 站点后,我每秒都会记录数十个数据错误,几乎总是出现错误“找不到表 0”。我们使用数据集并经常引用 Table[0]
,虽然我了解在访问 Table[0]
之前检查数据集是否有表的防御性编码实践,但从来没有这样做过。过去的一个问题。某个页面前一秒加载得很好,然后下一秒就丢失了其中一个数据驱动组件。只是看看这是否对任何人来说都敲响了警钟。
更多细节:这次我使用了不同的构建服务器,虽然我想象两者的编译器设置是相同的,但我很难想象有一个开关可以使 50%我的数据库调用返回时没有表。我还将项目切换到 VS 2008,但当我切换回 VS 2005 时,恢复了所有这些更改。我注意到构建的程序集有一个新的MyLibrary.XmlSerializers.dll,它不习惯的地方,但我也无法想象这是造成所有麻烦的原因。 (它也不会在调用 MyLibrary 时失败,或者至少不会比任何其他时间都失败。)
更新添加:我发现麻烦的构建是“发布”构建,其中工作构建被编译为“调试”。这可以解释一下吗?
回滚到这些更改修复之前的版本。 (重新启动 SQL Server,我们之前尝试过的步骤,没有成功。)
问题似乎也是基于负载的 - 这在我们的集成和 QA 环境中顺利运行,甚至我们的冒烟测试环境 - 指向生产数据的环境 - 在轻负载下也很好。
这是否具有您过去可能见过的任何东西的显着特征?
最佳答案
提出这个老问题是因为我们遇到了同样的问题,也许我们的解决方案可以更深入地了解导致此问题的原因。
本质上,这个问题发生在生产环境中,Windows 服务负载非常重,该服务使用多个线程同时处理多个作业(100 个用户通过 ASP.NET Web 应用程序使用同一个数据库,大约有 60 个事务/在使用 SQL Server 2000 的旧硬件上排名第二)。
没有共享变量,即重新打开连接、启动事务、执行操作、提交事务并关闭连接。
在重负载下有时会出现以下异常之一:
NullReferenceException: Object reference not set to an instance of an
object.
at System.Data.SqlClient.SqlInternalConnectionTds.get_IsLockedForBulkCopy()
或
System.Data.SqlClient.SqlException:
The server failed to resume the transaction. Desc:3400000178
或
New request is not allowed to start because it should come with valid transaction descriptor
或
This SqlTransaction has completed; it is no longer usable
不知何故,池内的连接似乎已损坏,并仍然与以前使用的事务相关联。此外,如果从池中检索此类连接,则 sqlAdapter.Fill(dataset) 会导致空数据集,从而导致“找不到表 0”。因为我们的服务会在失败时重试操作(读取作业列表),并且它总是会从池中获取相同的损坏连接,因此在重新启动之前,它会因此错误而失败。
我们通过在异常时使用 SqlConnection.ClearPool(connection) 来解决该问题,以确保从池中丢弃该连接并重组应用程序,以便更少的线程同时访问相同的资源。
我不知道到底是谁造成了这个问题,所以我不确定我们是否真的解决了这个问题,也许只是让它变得如此罕见,以至于还没有再次发生。
关于asp.net - 偶发的 ASP.NET 数据错误 : "Cannot find table 0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2276740/
我是一名优秀的程序员,十分优秀!