Как предотвратить попытки подключения OleDbConnection к распределенной транзакции?

Я использую OleDB для подключения к файлу Excel с помощью этой строки подключения

@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES"""

Но когда я это делаю (внутри TransactionScope ())

using (OleDbConnection conn = new OleDbConnection(connectionString))
{
    conn.Open();
    ...
}

Я получаю следующую ошибку

Интерфейс ITransactionLocal не поддерживается поставщиком Microsoft.ACE.OLEDB.12.0. Локальные транзакции недоступны для текущего провайдера.

Как мне заставить OleDbConnection не пытаться подключиться к распределенной транзакции? У класса SqlConnection свойство ConnectionString называется Enlist, но я не могу найти эквивалентную конфигурацию или метод для OleDB.


person JeremyWeir    schedule 09.10.2009    source источник
comment
Но ведь это же локальная сделка? Ошибка касается только локального, а не распределенного. Я не уверен насчет вашего случая, но, возможно, мой пост здесь [faiz.kera.la/2009/08/26/ может вам помочь.   -  person Faiz    schedule 12.10.2009
comment
да, ошибка говорит о локальной транзакции, но нет явной локальной транзакции, только TransactionScope   -  person JeremyWeir    schedule 12.10.2009


Ответы (1)


В строке подключения добавьте следующий код: "; OLE DB Services = -4;"

person Reza Ahang    schedule 08.02.2010
comment
Это фантастическое решение, которое спасло и мой бекон! Ненавижу, что все это так недокументировано ... Я хотел бы знать, откуда ты это знаешь, Реза? - person Cody Konior; 25.01.2012
comment
Я знаю, что ему 3 года, но я наткнулся на это решение и задумался, что за ним стоит. Он отключает объединение баз данных и автоматическое включение. Дополнительная информация здесь, в таблице 4: msdn.microsoft.com/en-us/ библиотека / ms810829.aspx - person Florin Bombeanu; 02.07.2013