Объектная модель служб SSIS - ошибка диспетчера подключений Excel на 64-битной машине - PullRequest
0 голосов
/ 06 января 2010

У меня есть пакет служб SSIS, который считывает файл Excel (источник потока данных) и передает данные на SQL Server с помощью элемента потока данных назначения OLEDB. Этот пакет выполняется приложением .Net с использованием объектной модели служб SSIS. Пакет хранится в файловой системе в подпапке приложения.

Пакет отлично работает как на моей машине для разработки, так и на тестовой машине. На этих машинах установлен win2k3 32bit. Служба SSIS была создана в 32-битной среде BIDS.

При развертывании этого приложения на рабочей машине со стандартной версией win2k3 x64 я получаю сообщение об ошибке

Произошла ошибка OLE DB. Код ошибки: 0x80040154. Доступна запись OLE DB. Источник: «Компоненты службы Microsoft OLE DB». Результат: 0x80040154 Описание: «Класс не зарегистрирован». Ошибка вызова метода AcquireConnection для диспетчера соединений «Диспетчер соединений Excel» с кодом ошибки 0xC0202009. компонент «Источник Excel» (630) не прошел проверку и вернул код ошибки 0xC020801C.

Я читал в других постах, что установка свойства Run64BitRuntime проекта (во время разработки) решает проблему при запуске его из BIDS.

Как установить это свойство через объектную модель служб SSIS.

Вот часть кода, которая выполняет пакет

   _application = New Application()
   _package = New Package()
   _package = _application.LoadPackage(packageName, Nothing)
   _updateResult = _package.Execute()

Спасибо

Масуд

1 Ответ

2 голосов
/ 06 января 2010

Свойство Run64BitRuntime применяется только к пакетному запуску внутри BIDS. Нет необходимости устанавливать это свойство при работе вне BIDS.

Я считаю, что проблема заключается в том, что при запуске в коде пакет выполняется в 64-битном режиме, однако Excel не поддерживает это. Для того, чтобы эта работа работала, вам нужно будет запустить 32-битную версию DTExec.

...