Поделиться через


MSSQLSERVER_3989

Применимо к:SQL Server

Сведения

Атрибут значение
Название продукта SQL Server
Идентификатор события 3989
Источник событий MSSQLSERVER
Компонент SQLEngine
Символическое имя XACT_UNSUPPORT_PARALLEL_TRAN3
Текст сообщения Не допускается запуск нового запроса, так как запрос должен содержать допустимый дескриптор транзакции.

Пояснение

Эта ошибка возникает при выполнении распределенного запроса, присоединенного к нескольким таблицам, размещенным удаленными экземплярами SQL Server, в то время как XACT_ABORT параметр сеанса включен. Пользователю выводится сообщение об ошибке наподобие следующего:

Сообщение 3989, уровень 16, состояние 1, строка
Не допускается запуск нового запроса, так как запрос должен содержать допустимый дескриптор транзакции.

Причина

Существуют некоторые ограничения проектирования в том случае, когда SQL Server обрабатывает распределенные запросы (DQs), если выполняются следующие условия:

  • SQL Server объединяет несколько таблиц одного удаленного источника данных SQL Server.
  • Сеанс, выдающий запрос, не указан в распределенной транзакции.

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

Действие пользователя

Чтобы устранить эту ошибку, заключите распределенный запрос в инструкцию начала распределенной транзакции:

BEGIN DISTRIBUTED TRANSACTION
/*The actual Distributed Query goes next, outside of comments*/
COMMIT TRANSACTION