NOLOCK и ЧТЕНИЕ ОТМЕНИЛО ФИКСАЦИЮ , скользкий путь. Вы никогда не должны использовать их, если Вы не понимаете, почему мертвая блокировка происходит сначала. Меня волновало бы, что Вы говорите, "Добавили мы с (nolock) ко всем SQL-запросам". Быть необходимостью для добавления С NOLOCK везде является верным признаком, что у Вас есть проблемы в Вашем слое данных.
сам оператор обновления выглядит немного проблематичным. Вы определяете количество ранее в транзакции, или просто вытягиваете его от объекта? AnswerCount = AnswerCount+1
то, когда вопрос добавляется, является, вероятно, лучшим способом обработать это. Тогда Вам не нужна транзакция для получения корректного количества, и Вы не должны волноваться по поводу проблемы параллелизма, что потенциально представляете себя.
Один простой способ обойти этот тип проблемы мертвой блокировки без большой работы и не включая грязные чтения состоит в том, чтобы использовать "Snapshot Isolation Mode"
(новый в SQL 2005), который будет всегда давать Вам чистое чтение последних неизмененных данных. Можно также поймать и повторить заведенные в тупик операторы довольно легко, если Вы хотите обработать их корректно.
Убедитесь, что ваш
заключен в раздел
.
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="v.aspx?q={R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>