В каких ситуациях разные пользователи видят разные строки в таблице на SQL Server? - PullRequest
1 голос
/ 17 сентября 2008

SQL Server версии 2000.

У нас есть несколько рабочих столов, которые общаются с MSSQL Server. При поиске конкретной записи некоторые рабочие столы возвращают правильные данные, а некоторые нет.

Команда SQL: «ВЫБРАТЬ * ОТ ПОДОРДА ГДЕ ([НЕТ] = 6141)» На одном или двух рабочих столах это возвращает запись. На сервере и на всех других рабочих столах запись не возвращается.

Какие области мне нужно посмотреть? Что могло бы вызвать это?

Ответы [ 6 ]

4 голосов
/ 17 сентября 2008

Эта ошибка, вероятно, исходит от пользователя, который удалил / вставил эту запись в транзакции, но еще не зафиксировал указанную транзакцию.

3 голосов
/ 17 сентября 2008

Проверьте, к какой базе данных и серверу вы подключаетесь на каждой машине - запрос достаточно прост, чтобы вы получали одинаковый ответ везде, ЕСЛИ вы не подключаетесь к разным базам данных или серверам.

2 голосов
/ 17 сентября 2008

Возможно, вы захотите просмотреть разрешения для таблицы, из которой вы выбираете, если вы подключаетесь к серверу как отдельный пользователь от каждой машины.

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

2 голосов
/ 17 сентября 2008

Если это просто ОДНА рабочая станция, возвращающая строку, значит, на этой рабочей станции есть открытая транзакция, которая не была зафиксирована.

В противном случае возможно, что уровни изоляции различны для разных рабочих станций, т.е. некоторые увидят незафиксированные данные, а другие - нет?

1 голос
/ 17 сентября 2008

После того, как вы исчерпали все опции, упомянутые выше, я рассмотрю блокировки строк и таблиц. Если это так, он должен вернуть ошибку, сообщив, что обнаружил блокировку. Вы запускаете приложение, которое может глотать ошибки?

0 голосов
/ 17 сентября 2008

Возможно, один или два пользователя, которые находят записи, используют другое имя схемы и, следовательно, разные таблицы. IE большинство пользователей используют dbo.PODORDH, но один или два пользователя используют otheruser.PODORDH.

...