Как разблокировать процесс (Вставить Stmt), заблокированный родительским процессом (Вставить Stmt) с помощью в TransactionScope - PullRequest
1 голос
/ 10 января 2010

У меня есть ребенок TransactionScope в пределах одного родителя TransactionSope. Дочерний элемент TransactionScope создается, исполняется и фиксируется несколько раз в единственном родителе TransactionScope.

Родительский TransactionScope заботится о Insert отдельной записи в базе данных, ожидая, пока второй набор операторов вставки завершит выполнение один за другим.

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

Я выяснил это, запустив SP_WHO2 на сервере sql с запущенной программой.

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

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

Мой вопрос: как разблокировать второй процесс, заблокированный первой вставкой?

1 Ответ

1 голос
/ 10 января 2010

Если каждый TransactionScope использует свое соединение, это ожидаемо и по замыслу.

Теперь я не эксперт в c #, но ...

...