У меня проблемы с базой данных.
Я могу выполнять основные запросы, хотя и намного медленнее, чем обычно.
Когда я пытаюсь просмотреть деревья иерархии для таблиц, представлений или процедур в SSMS Object Explorer, я получаю
lock request time out period exceeded
.Мои отчеты SSRS, которые запускаются для объектов в этой базе данных, больше не завершаются.
Задания, связанные с процедурами, хранящимися в этой базе данных, также не выполняются.
Я попытался использовать, sp_who2
чтобы найти и уничтожить все соединения в базе данных, однако это не решило проблему.
Что здесь происходит? Как я могу решить это?
sql-server
sql-server-2008
Ллойд Бэнкс
источник
источник
Ответы:
Это было вызвано постоянным откатом транзакции. Пришлось перезапустить мой кластер серверов
источник
Без учета аппаратного обеспечения, возможно, вам нужно запустить сценарий, чтобы проверить, какие действия удерживают сеанс SQL, один из распространенных сценариев - это не использовать
Implicit transactions Option
SQL Server Management Studio.источник
locking request time out period exceed
я бы сказал, что бегimplicit transaction option
поможет лучше понять причины.Я получил эту проблему, когда начал явную транзакцию, в которой я создал таблицу в базе данных tempdb из сценария, работающего в другой базе данных (не в базе данных tempdb). Когда я фиксировал транзакцию, фиксация, казалось, не снимала блокировку таблицы, которую я создал в tempdb.
Благодаря этой странице я
USE
выполнил tempdb и выполнилDBCC OPENTRAN
SPID соединения с tempdb, который вызывал блокировку. Тогда яKILL <SPID number>
убью его.Не очень изящно, и я потерял всю информацию в таблице, которую создал в tempdb, но в моем случае это было нормально.
источник
Так много всего, что я могу предложить, это лишь несколько вопросов, которые помогут вам найти ответ.
БД на сервере предназначена только для запуска SQL Server? Если нет, другие процессы могут мешать, похищая драгоценное процессорное время.
Серверу БД не хватает памяти? SQL Server будет пытаться выделить каждый байт, который может, но если он заполнен и ваши запросы требуют больше данных для загрузки, он вынужден использовать виртуальную память, что радикально увеличивает количество времени, которое могут потребоваться даже для простых запросов.
Является ли пропускная способность сети сервера БД малой для своевременной передачи данных?
В конце концов, похоже, что компьютер, на котором вы размещаете SQL Server, недостаточно приспособлен для того, что вы пытаетесь сделать. Вполне возможно, что вы наконец достигли тех аппаратных ограничений, когда производительность радикально падает. Если это так (приведенные выше вопросы помогут вам определить это), вы захотите переместить БД на сервер, размер которого соответствует размеру данных (и запросов), которые вы пытаетесь обработать.
Это может означать использование более быстрых процессоров, более быстрых дисков или просто установку большего объема оперативной памяти.
источник
«Когда я пытаюсь просмотреть деревья иерархии для таблиц, представлений или процедур в SSMS Object Explorer, я получаю превышение времени ожидания запроса блокировки».
У меня была точно такая же проблема. Я пошел в окно выполнения запроса и; набрал и выполнил
ROLLBACK
заявление.Похоже, некоторые из серии заявлений, которые я выполнял до этого, проходили в открытой транзакции. В частности, потому что некоторые из них, где DDL заявления. Как только я произвел откат, иерархии объектов начали работать.
источник
Как уже отмечали многие, обычно это длительные транзакции, в основном из-за которых я пропустил команду SET IMPLICIT TRANSACTIONS ON, которая вообще не должна использоваться. Чтобы понять, почему стоит проверить проницательную статью Брента Озара
В любом случае, вы можете получить список длительных ожидающих транзакций, используя следующий запрос.
https://www.brentozar.com/archive/2018/02/set-implicit_transactions-one-hell-bad-idea/
источник