Обновления AJAX из базы данных SQL Server: возвращены неверные значения - PullRequest
0 голосов
/ 20 мая 2011

У меня есть интерфейс отчетов ASP.NET, который отображает несколько значений, возвращаемых из серверной части SQL Server. После входа страница браузера никогда не перезагружается, но несколько областей экрана обновляются по таймеру с помощью вызовов AJAX.

Моя проблема заключается в том, что в областях экрана периодически отображаются значения, поступающие от предыдущих вызовов AJAX. Я тщательно и интенсивно исследовал проблему в течение нескольких дней, и я не смог точно определить, что вызывает ее, или как полностью ее преодолеть. В настоящее время неправильные значения очень редки (скажем, 3 из 50 000), но я не должен получить ничего! Вот некоторые подробности о настройке:

  • таймер обновления экрана запускается каждые 30 секунд для обновления всех областей экрана
  • между обновлениями области экрана 1,5 лага
  • значения, используемые для определения того, какой хранимый процесс SQL должен запускаться для получения правильных значений из базы данных для каждой области экрана, правильно передаются в интерфейс ASP.NET - я знаю со 100% -ной уверенностью, какой хранимый процесс нужно запустить
  • сохраненный процесс возвращает свои значения в SQLDataReader
  • это считыватель, который иногда выдает значения, которые кажутся "буферизованными" из предыдущих взаимодействий AJAX, т.е. я запускаю правильный сохраненный процесс с правильными переменными, но возвращаемые значения не те, что я получаю, если я запускаю это точно такая же команда в интерфейсе SQL-запроса - это результаты предыдущего вызова
  • Соединение SQL, команда и читатель создаются и создаются заново для каждого взаимодействия и корректно удаляются после использования через интерфейс IDisposable
  • Я поменял читателя на набор данных без различий в результатах
  • мои вызовы AJAX являются синхронными (async = false), поэтому каждый из них должен завершаться до запуска следующего, но у меня также есть задержка в 1,5 секунды между обновлениями области экрана и 30 секунд между циклами, поэтому они не должны выполняться друг в друга в любом случае.

Что расстраивает, так это то, что читатель выполняет инструкцию SQL без исключения, но, по-видимому, возвращает результаты предыдущего взаимодействия - и то очень редко, но один неверный результат - это слишком много.

Я вообще не использую управление состоянием ASP.NET - отключен в web.config.

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 21 мая 2011

это читатель, который иногда приносящие значения, которые кажутся "буферизованный" из предыдущего AJAX взаимодействия, т. е. я бегу правильный хранимый процесс с правильным переменные, но возвращаемые значения не то, что я получу, если я побежал так точно та же команда в интерфейсе SQL-запроса - они являются результатом предыдущего вызова соединения SQL, команды и читатель все создано и созданный заново для каждого взаимодействие и распоряжаться правильно после использования через IDisposable интерфейс я поменял читателя для набора данных, без разницы в Результаты

Это помогло бы показать нам ваш код здесь. Если объекты данных содержат неправильные значения, вы должны с уверенностью продемонстрировать, что на внутреннем сервере выполняются правильные SP, и, если это применимо, правильные параметры передаются на внутренний сервер. Вы должны быть в состоянии пошагово выполнить вызов в отладчике Visual Studio.

0 голосов
/ 21 мая 2011

Профилируйте операторы SQL, поступающие на сервер SQL с профилем сервера SQL. Таким образом, вы можете сузить потенциальное местоположение ошибки. Затем запустите http-отладчик fiddler и проверьте http-запросы. и дайте нам знать, что вы нашли!

...