Имея странную проблему. Я тестирую приложение ASP.NET, которое я написал, что запрашивает SQL-сервер через AJAX. Приложение использует LINQ-to-SQL для загрузки данных примерно с 8 или около того таблиц в соединении, и каждый раз за раз вызов SQL-сервера блокируется и никогда не возвращается.LINQ-to-SQL Заблокирует SQL Server во время запроса?
Моя первая мысль заключалась в том, что он зашел в тупик, но из того, что я прочитал, SQL-сервер должен выбрать, чтобы убить один из оскорбительных потоков, если это произойдет. В случае этого приложения другие пользователи не обращаются к базе данных, поэтому я не вижу, как это может быть проблемой.
Другие симптомы:
Использование процессора на сервере шипы около 40% при выполнении этого вызова, и остается там, даже после закрытия приложения («Stopped» в Visual Studio).
Сервер продолжает выполнять вызов до тех пор, пока я фактически не убью веб-сервер Visual Studio (Cassini), который живет в лотке.
При взгляде на то, что делает сервер SQL, все, что мы видим, это то, что он выполняет вызов LINQ-to-SQL, ничего не выглядит обычным.
У кого-нибудь есть мысли о том, что это "пахнет"?
Спасибо, Сэм
Спасибо, Крис. Я думал о том, чтобы идти по маршруту «NOLOCK», но сэкономил это для худшего случая. Я проверю параметры пакета обновления и тайм-аута - это может быть так. –
Если грязные чтения в порядке (и они обычно есть), то использование NOLOCK - хорошая идея. SQL Server выбирает блок блокировки по умолчанию, который добавляет служебные данные и уменьшает время отклика запросов. В даже умеренно используемых системах блокировка по умолчанию может иметь негативное влияние, которое обычно является ненужным. – NotMe
Хорошо - я проверю это. Я думаю, маловероятно, что любые два пользователя будут редактировать одни и те же записи одновременно в этой системе, поскольку это связано с начислением заработной платы для рабочего, и есть только один менеджер рабочего. Спасибо! –