Введите:
Клиент утверждает, что приложение (.NET) при запросе некоторых данных возвращает данные, отличные от того, когда клиент просматривает таблицу данных напрямую.
Я понимаю, что могут быть разные причины и в совершенно разных местах. Моя цель не в том, чтобы решить ее здесь, а в том, чтобы спросить опытных администраторов баз данных и разработчиков баз данных:
Возможно ли для ПРОСМОТРА показывать данные, которые не соответствуют базовым таблицам (таблицам)?
- Каковы возможные причины / причины этого?
- Может ли оператор UPDATE в представлении заставить будущие SELECT возвращать «обновленные» данные, тогда как таблица на самом деле этого не делает?
Возможные причины (просьба прокомментировать те, у кого есть вопросительные знаки):
- причина в том, что есть две отдельные транзакции, которые объясняют путаницу клиентов.
- базовая таблица была изменена, но представление не было обновлено (с использованием sp_refreshview)
- другой пользователь подключается и может видеть разные данные из-за разрешений?
- ошибка программиста: неправильные таблицы / столбцы, неправильные фильтры (все в одном здесь)
- происходит повреждение: DBCC CHECKDB должен помочь
- может
SELECT ... FOR UPDATE
вызвать это ???
- ? __
Что на самом деле произошло (ОТВЕТ):
Позиции столбцов были изменены в некоторых таблицах: очевидно, клиент предоставил полный доступ к базе данных консультанту для анализа использования базы данных. Этот великий парень изменил порядок столбцов, чтобы увидеть несколько полей audit в начале таблицы при использовании предложений SELECT * ...
.
При использовании dbGhost схема базы данных сравнивалась со схемой резервного копирования, созданной за несколько дней до появления проблемы, и были обнаружены различия положения столбцов.
То, что произошло дальше, было не связано с программированием, а стало вопросом политики.
Поэтому sp_refreshview
было решением. Я просто сделал еще один шаг, чтобы выяснить, кто вызвал проблему. Спасибо всем.