Невозможно убить задание сервера SQL, статус остается убитым / откат

Я не могу убить некоторые задания агента SQL Server. Состояние задачи продолжает выполняться, а команда остается в состоянии KILLED/ROLLBACK. Задание выполняет запросы к системе PI OSI через связанный сервер OLEDB и Oracle. До сих пор я нашел единственный способ убить эти задания - перезапустить SQL-сервер (не предпочтительный метод).

5 ответов

Я нашел следующую статью https://connect.microsoft.com/SQLServer/feedback/details/187192/openquery-to-linked-server-hangs-leaving-spid-with-open-tran-that-cannot-be-killed-then-templog-ldf-grows-without-limit-requires-sql-server-restart-on-production-servers

По-видимому, некоторые люди имеют эту проблему, используя openquery через связанный сервер, который не является SQL Server. Я публикую обходной путь, который BReuter разместил в статье выше:

отправленный BReuter 30.01.2007 в 14:21 * Я испытал точное поведение и нашел комбинацию программного обеспечения, которое стабилизировало нашу среду.

Было три ключевых ингредиента, которые я нашел:

1) Убедитесь, что у вас нет ЛЮБЫХ связанных серверов, использующих Microsoft OLEDB Provider для Oracle, вместо этого используйте Oracle Provider for Oracle(версия 9.2.0.4 - это то, что у меня в работе).

2) Не позволяйте связанному серверу работать "в процессе". Это потребовало некоторых исследований, но можно запустить связанный сервер из пространства памяти SQL, следуя приведенным ниже инструкциям.

3) Я использую SQL 2005 SP1 на W2K3, но я считаю, что ключ OLEDB - это ключ, а не версия ОС или БД. Параметры безопасности по умолчанию слишком жесткие, чтобы запустить внепроцессный поставщик Oracle OLEDB (OraOLEDB). Кроме того, настройки по умолчанию для MS DTC не разрешают сетевую связь.

  1. Панель управления-> Администрирование-> Службы компонентов
  2. Drill to Component Services-> Компьютеры

    а. Щелкните правой кнопкой мыши Мой компьютер-> Свойства

  3. Вкладка MSDTC -> Кнопка настройки безопасности (скриншот ниже)

    а. Доступ по сети DTC - проверено.

    б. Разрешить входящий / исходящий - проверено.

    с. Аутентификация не требуется - это имитирует настройки безопасности Windows 2000.

    д. Включить транзакции XA - тип транзакции, реализованный поставщиком OraOLEDB.

  4. Drill to Component Services-> Компьютеры-> Мой компьютер-> Конфигурация DCOM

    а. Щелкните правой кнопкой мыши MSDAINITALIZE-> Свойства.

  5. Вкладка "Безопасность" (скриншот ниже)

    а. Права доступа -> Настройка.

    б. Нажмите кнопку "Разрешения на доступ".

    с. Дайте учетной записи службы SQL Server разрешение "Локальный доступ".

    д. Повторите для "Запуск и активация".*

Если это большие транзакции, возможно, сервер все еще выполняет откат, что может занять некоторое время.

Эта страница http://www.jaygeiger.com/index.php/2015/03/03/how-to-kill-a-frozen-linked-sql-server-connection/ предоставляет обходной путь. Он заключается в ручном прекращении TCP-соединения. Это не идеальное решение, но это лучшее, что я знаю. Это лучше, чем перезапускать весь SQL Server.

Btw. Я нашел эту ссылку на https://connect.microsoft.com/SQLServer/feedback/details/187192/openquery-to-linked-server-hangs-leaving-spid-with-open-tran-that-cannot-be-killed-then-templog-ldf-grows-without-limit-requires-sql-server-restart-on-production-servers страница, упомянутая в сообщении Ахда

Транзакции, которые застряли в KILLED/ROLLBACK, можно отменить, убив транзакции на локальном сервере. Если запрос кросс-серверный и вы не хотите ждать отката, вам нужно перейти на удаленный сервер и завершить транзакцию, а также уничтожить ее на локальном сервере.

Это относится к любой системе баз данных.

Для меня уничтожение внешних ресурсов OLEDB не сработало, и мне, к сожалению, пришлось перезапустить экземпляр SQL-сервера, чтобы решить эту проблему всегда

В моих случаях он выбирается с помощью OPENQUERY из серверов, связанных с Oracle, или списков SharePoint, в которых просто есть простая ошибка, такая как неверный пароль, и она не может устранить ошибку и возвращается и никогда не возвращается, пока вы не перезапустите службу.

Другие вопросы по тегам