Как запретить адаптеру WCF-SQL откатывать транзакцию, если данные не возвращаются - PullRequest
0 голосов
/ 13 мая 2019

Я использую типизированный опрос с хранимыми процедурами, использующими транзакцию окружения.Оператор PollingAvailable дает количество «всех» строк.Оператор опроса дает только подмножество допустимых строк, а иногда ни одной.

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

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

Директивы транзакций хранимых процедур (используемые в качестве моего "стандарта"):

SET XACT_ABORT ON;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

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

1 Ответ

1 голос
/ 13 мая 2019

Таким образом, «правильное» решение состоит в том, чтобы создать PollingDataAvailableStatement для возврата правильного значения 0 или> 0 в зависимости от ожидаемого вывода оператора опроса.

В ситуациях, когда это имеет значение, потому что это не всегда имеет значение :), я добавил флаг к SP, чтобы указать, что он вызывается из PollingDataAvailableStatement, чтобы он мог, так что часть его логики может определить, доступны ли данные, и верните этот сигнал.

Конечно, вы можете использовать отдельный SP, но я бы предпочел сохранить логику в одном месте по причинам обслуживания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...