sunil mali Ответов: 1

Транзакция .net не может выбрать данные


Дорогие Все,

Сегодня я вернулся с еще одной проблемой.

У меня есть ADO.NET приложение, которое вставляет данные в таблицу. (бывшие счета-фактуры)

Я написал транзакцию с IsolationLevel. ReadUncommitted в моем ADO.net приложение, использующее код c#

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

экс:
Когда я запускаю ниже запрос из моего окна sql запроса, когда ADO.net приложение запущено,
Ниже запрос работает,
выберите * из счетов-фактур с помощью(nolock, nowait)

Ниже запрос не работает,
выберите * из счетов-фактур

Я знаю,что когда мы используем with(nolock, nowait), мы можем читать незафиксированные данные, но я хочу читать только зафиксированные данные, но кажется, что транзакция блокирует мою таблицу и не позволяет мне читать какие-либо данные.

Я хочу читать только зафиксированные данные.

Что я уже пробовал:

Я попробовал IsolationLevel. ReadCommitted, IsolationLevel.ReadUnCommitted в моем ado.net применение


Пожалуйста, подскажите, что можно сделать в этой ситуации.

1 Ответов

Рейтинг:
1

The Praveen Singh

Итак, тема уровней изоляции SQL Server довольно сложна для понимания.
Теперь, чтобы конкретно ответить на ваш вопрос, ваш оператор SELECT не может завершиться, потому что ему нужно прочитать все записи в таблице, а поскольку оператор INSERT все еще вставляет записи, select не может закончить чтение таблицы до тех пор, пока вставка не завершится.

Теперь предположим, что вы счастливы, что ваш оператор SELECT игнорирует строки, которые в данный момент заблокированы (то есть вставляются). Вы можете использовать подсказку запроса READPAST, чтобы позволить вашему оператору select завершиться во время выполнения оператора Insert.

Выберите * из TableName WTIH(READPAST)
Есть смысл?


sunil mali

Я не хочу использовать ReadPast, так как мне нужно изменить все мои запросы на веб-сайт.
Есть ли какой-либо способ или уровень изоляции транзакций, с помощью которого я могу включить select, когда происходит вставка?