Сеанс пользователя застрял в состоянии "убито \ откат" - PullRequest
0 голосов
/ 16 января 2019

Один из сеансов, выполняющих сохраненный процесс из приложения, застрял в фазе kill \ rollback. Возможно, это не должно быть так долго для спрока, чтобы откатиться, и это застряло там в вечности. По сути, sproc - это группа избранных союзов, и мне любопытно, почему это продержится так долго. Что касается ожидания, то ниже приведен фрагмент того, что я вижу, что он ждет. Я хотел бы понять, как я собираюсь избавиться от этого без перезапуска служб SQL и, самое главное, что в основном можно сделать, чтобы избежать этой ситуации как со стороны приложения, так и со стороны SQL. Дайте мне знать, если что-то еще нужно. Кроме того, эта хранимая процедура использует [SalesForce] в качестве связанного сервера, использующего DBAmp для извлечения данных ... это будет причиной и как ее преодолеть.

enter image description here

1 Ответ

0 голосов
/ 16 января 2019

В зависимости от того, как долго an eternity здесь, возможно, он зависнет навсегда.

Ранее я работал в среде, в которой мы обычно извлекали данные в SQL Server из приложения мэйнфрейма. Периодически мэйнфрейм неожиданно прерывал соединение, но ничего не сообщал обратно SQL Server, который с радостью находился бы в состоянии «Выполнение», ожидая результатов запроса. На следующий день, когда будет выполнено то же самое задание, запрос not-executing-executing будет блокировать новый экземпляр и выдать ошибку.

KILL подключение нежити позволило бы запустить новый экземпляр, но старый экземпляр оставался в KILLED\ROLLBACK, пока мы не перезапустили SQL Services.

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

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

...