Реализация вложенных транзакций с помощью поставщика OLE DB для SQL Server появляется сообщение об ошибке: «Не удалось запустить транзакцию для поставщика OLE DB»

Переводы статьи Переводы статьи
Код статьи: 306649 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

Поставщик Microsoft OLE DB для SQL Server не поддерживает вложенные транзакции, и возвращается следующее сообщение об ошибке:
Не удалось запустить транзакцию для поставщика OLE DB «% ls».
Microsoft SQL Server также возвращает следующее сообщение об ошибке, если поставщик является поставщиком специфические для SQL Server:
Сервер: Сообщение 7392, уровень 16, состояние 2,
Не удалось запустить транзакцию для поставщика OLE DB «sqloledb». [Поставщик OLE/DB возвратил сообщение: в течение сеанса может быть активна только одна транзакция.]

Причина

Эта ошибка указывает, что инструкция изменения данных выполнялся от поставщика OLE DB при подключения в явной или неявной транзакции, и поставщик OLE DB не поддерживает вложенные транзакции. SQL Server требуется такая поддержка, таким образом, что при определенных условиях ошибки можно ограничить влияние инструкции модификации данных, продолжая выполнение транзакции.

Решение

Чтобы обойти эту проблему, значение XACT_ABORT ON перед транзакции. В этом случае SQL Server для завершения транзакции окружающих при возникновении ошибки во время обработки инструкции модификации данных. Если параметр SET XACT_ABORT ON, SQL Server не требуется поддержка вложенных транзакций от поставщика OLE DB.

Статус

Данное поведение является особенностью.

Дополнительная информация

Действия для воспроизведения поведения

В этом примере используется связанный сервер, который использует поставщик OLE DB для SQL Server, чтобы объяснить влияние XACT_ABORT.
  1. Чтобы создать связанный сервер с именем Sales, который использует поставщик Microsoft OLE DB для SQL Server с помощью поставщика OLE DB для SQL Server.
    USE Master
    GO
    EXEC sp_addlinkedserver 
        'Sales',
        N'SQL Server'
    GO
    					
  2. Откройте анализатор запросов и выполните следующую команду.
    Begin Transaction
    Insert into Sales.Northwind.DBO.Customers(CustomerId,CompanyName) Values ('1000','Test')
    Commit Transaction
    					
    Сообщение указанной выше ошибки.

    Временное решение

  3. Запустите следующую команду, чтобы значение XACT_ABORT ON:
    Set XACT_ABORT ON
    					
  4. Запустить Вставка Инструкция еще раз. Обратите внимание на то, что данные вставляются в таблицу без ошибок.

Ссылки

Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
177138 ИНФОРМАЦИЯ: Вложенные транзакции, не доступные в ODBC и OLE DB и ADO
187289 Методические УКАЗАНИЯ: Реализации вложенных транзакций с Oracle

Свойства

Код статьи: 306649 - Последний отзыв: 6 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.6 Service Pack 1
Ключевые слова: 
kbprb kbmt KB306649 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:306649

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com