У меня проблема, которая, кажется, является результатом тупиковой ситуации.
Сейчас мы ищем причину проблемы, но тем временем мы хотели перезапустить сервер и заставить клиента работать.
И теперь каждый раз, когда мы запускаем программу, она просто говорит: «SqlConnection не поддерживает параллельные транзакции». Мы ничего не изменили в программе, в ее скомпилированном и на клиентском сервере, но после ситуации «возможной тупиковой ситуации» она снова хочет выходить в сеть.
У нас есть 7 клиентов (компьютеров), на которых запущена программа, каждый клиент общается с веб-службой на локальном сервере, а веб-служба общается с sql-сервером (на той же машине, что и веб-сервер).
Мы перезапустили и sql-сервер, и iis-сервер, но не перезагрузили сервер из-за других важных служб, работающих на сервере, поэтому это последнее, что мы делаем.
Мы не можем видеть никаких замков или чего-либо еще во вкладке управления.
Итак, мой вопрос: почему ошибка «SqlConnection не поддерживает параллельные транзакции» возникает при переходе от одного к другому без каких-либо изменений в программе, и он все еще живет между sql-restart.
Кажется, что это происходит при первом db-запросе, который программа делает при запуске.
Если вам нужна дополнительная информация, просто спросите. Я озадачен ...
Дополнительная информация:
Я не думаю, что у меня есть «длинные» транзакции. Сценарий часто состоит в том, что у меня есть набор данных с 20-100 строками (ContractRows), в котором я сделаю .Uddate для tableAdapter. Я также зацикливаю эти 20-100 строк, и для некоторых из них я создам ad-hook-sql-querys (например, если арендованный продукт помечен как возвращаемый, я создаю sql-запрос, чтобы пометить продукт как возвращенный в базе данных).
Так что я делаю это очень упрощенно:
Create objTransactionObject
Create objtableadapter (objTransactionObject)
for each row in contractDS.contractrows
if row.isreturned then
strSQL &= "update product set instock=1 where prodid=" & row.productid & vbcrlf
End if
next
objtableadapter.update(contractDS)
objData.ExecuteQuery(strSQL, objTransactionObject)
if succsesfull
objtransactionobject.commit
else
objtransactionobject.rollback
end if
objTran.Dispose()
А потом я делаю коммит или откат в зависимости от того, все прошло хорошо или нет.
Редактировать: Ни один из ответов не решил проблему, но я буду благодарен вам за хорошие указатели устранения неполадок.
«SqlConnection не поддерживает параллельные транзакции» внезапно исчезает, и теперь sql-сервер просто «отключается» 4-5 раз в день, я думаю, это тупик, который делает это, но у меня нет необходимых знаний, чтобы это выяснить и не хватает sql-экспертов, которые могут отслеживать это для меня в данный момент. Я просто перезагружаю sql-сервер и все снова работает. 1 из 10 раз я также должен перезагрузить компьютер. Это действительно беспокоит меня (и моих клиентов, конечно).
Любой, кто знает человека со хорошими знаниями в анализе проблем с тупиками или других проблем с sql в Швеции (или во всем мире, говорящих по-английски), может связаться со мной. Я знаю, что это не контактный сайт, но я выбираю свой шанс, чтобы задать вопрос, потому что у меня закончились варианты, я потратил 3 дня и ночи на оптимизацию клиентов, чтобы быть уверенным, что мы закрываем соединения и не делаем слишком много глупостей , Без удачи.