SQL Server数据库中的AJAX更新:返回了错误的值

时间:2011-05-20 10:12:02

标签: sql-server ajax sqldatareader

我有一个ASP.NET报告界面,它显示从SQL Server后端返回的几个值。登录后,浏览器页面永远不会重新加载,但是通过AJAX调用在计时器上更新了几个屏幕区域。

我的问题是屏幕区域间歇性地显示来自先前AJAX调用的值。我已经彻底和深入地研究了这个问题好几天了,但是我无法明确指出导致它的原因,或者如何完全克服它。目前,不正确的值非常罕见(例如,每50,000个中有3个),但我应该一无所获!这些是有关设置的一些细节:

  • 屏幕刷新计时器每30秒运行一次以更新所有屏幕区域
  • 屏幕区域更新之间有1.5秒的延迟
  • 用于决定运行哪个SQL存储过程以从每个屏幕区域的数据库中获取正确值的值正在被正确传递到ASP.NET接口 - 我知道100%确定哪个存储过程要运行< / LI>
  • 存储过程将其值返回给SQLDataReader
  • 读者有时会产生似乎从以前的AJAX交互中“缓冲”的值,即我使用正确的变量运行正确的存储过程,但返回的值不是我得到的值SQL查询接口中的精确相同命令 - 它们是先前调用的结果
  • SQL连接,命令和阅读器都是为每次交互重新创建和实例化的,并在使用后通过IDisposable接口正确处理
  • 我已经将读者换成了数据集,结果没有区别
  • 我的AJAX调用是同步的(async = false),因此它们应该在下一个运行之前完成,但是屏幕区域更新和周期之间的30秒也有1.5秒的延迟,所以它们不应该运行无论如何,彼此进入。

令人沮丧的是,读者正在运行SQL语句而不会抛出异常,但似乎从先前的交互返回结果 - 然后只是很少,但是一个不正确的结果太多了。

我根本没有使用ASP.NET状态管理 - 在web.config中关闭。

我错过了什么?

2 个答案:

答案 0 :(得分:0)

使用sql server profile配置到达sql server的sql语句。您可以通过这种方式缩小bug的潜在位置。接下来,启动fiddler http调试器并验证http请求。让我们知道你发现了什么!

答案 1 :(得分:0)

  

有时是读者   产生似乎是的价值   以前的AJAX“缓冲”   互动,即我正在运行   用正确的方法纠正存储过程   变量,但返回的值是   不是我得到的,如果我跑得那么精确   SQL查询接口中的相同命令    - 它们是先前调用SQL连接,命令和的结果   读者都是创造出来的   重新实例化   互动和正确处置   通过IDisposable使用后   界面我换了读者   对于数据集,没有区别   结果

这将有助于向我们展示您的代码。如果数据对象包含错误的值,则必须确定在后端运行正确的SP,并且如果适用,则将正确的参数传递给后端。您应该能够在Visual Studio调试器中单步调试。