Як я можу вирішити помилку менеджера з'єднань SSIS Excel 0xC0209303?


9

Я створив пакет SSIS, який імпортує файл excel у таблицю SQL Server.

Пакет SSIS працює без будь-яких проблем, коли я запускаю його локально на своїй машині, але коли я запускаю його на сервері, де планується пакет, я отримую помилку нижче (з текстового файлу я виводжу помилки з використанням протоколу SSIS).

Після дослідження, єдині рекомендації, які я міг знайти, було встановити властивість Run64BitRuntime на false, що я зробив, але все одно не пощастило. Я сумніваюся, що саме це викликає мою помилку, хоча помилка не вказує нічого щодо 64-бітного (як це було у знайдених статтях).

Я також подумав, що це може бути те, що Сервер не має відповідних драйверів Excel, але я також не думаю, що це так, тому що зазвичай повідомлення про помилку говорило б про те, що драйвери не реєструються.

На даний момент у мене немає доступу до віддаленого доступу до сервера. Я можу завантажувати пакунок лише в папку, після чого він управляється додатком, тому єдині повідомлення про помилки, які я бачу, - це те, що є у створеному мною текстовому журналі помилок.

введіть тут опис зображення

Код помилки DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. Помилка виклику методу AcquireConnection до менеджера з'єднань "Envision" з кодом помилки 0xC0209303. Перед цим можуть бути розміщені повідомлення про помилки з додатковою інформацією про те, чому виклик методу AcquireConnection не вдався.

"Envision" - це ім'я мого менеджера з'єднань Excel.

Я заповнюю шлях файлу Excel та рядок з'єднання за допомогою виразів.

Вираз рядка з'єднання виглядає приблизно так:

"Провайдер = Microsoft.ACE.OLEDB.12.0; Джерело даних =" + @ [Користувач :: SourceFilePath] + "; Розширені властивості = \" EXCEL 12.0 XML; HDR = ТАК \ ";"

SSIS Pacakge виконується ім'ям користувача / обліковим записом Windows. Я думаю, це може бути обліковий запис веб-служб. (BDS_sprtIIS)

Хтось має якісь рішення чи пропозиції щодо вирішення цієї проблеми пакета, працюючи лише на моїй локальній машині, але не на фактичному сервері, на якому буде розміщено пакет?

Відповідь нижче я знайшов на іншому форумі, чи може це бути причиною моїх проблем? В основному вони говорять про те, що менеджер з'єднань Excel чомусь намагається отримати доступ до папки temp користувачів, і якщо у нього немає доступу до цієї папки, вона вийде з ладу:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/da77919c-0161-4eb5-bf89-7107d839435a/the-acquireconnection-method-call-to-the-connection-manager-excel-connection- менеджер-невдало-з? forum = sqlintegrationservices

Я також помітив, що драйвер Microsoft.JET.OLEDB.4.0 намагатиметься прочитати тимчасовий каталог під профілем користувача, який увійшов у систему.

.

... Ми запускаємо наші агенти SQL за допомогою облікового запису домену нижчого рівня та запускаємо наші пакети SSIS за допомогою облікового запису проксі. Ви маєте рацію, оскільки Прокмон підтвердив це і для мене. Я надав права облікового запису проксі в темп-каталог профілю (C: \ Документи та налаштування \ SQLAgentDomainAccount \ Локальні настройки \ Темп), і він працював!

Я не використовую завдання SQL Server Jobs або Proxy. Пакет просто виконується обліковим записом Windows, швидше за все, через скрипт командного рядка.

В обліковому записі Windows є доступ до файлу, але я не впевнений, чи має він доступ до папки "TEMP" (на яку я ніколи не посилаюся в пакеті, тому не знаю, чому потрібно мати доступ до цієї папки) ...

Відповіді:


8

Були дві проблеми, які не давали пакет працювати на сервері. Нижче наведені 2 питання та знайдені нами рішення.

  1. Пакет виконується додатком, який за замовчуванням використовує 64-розрядну утиліту DTexec, але пакет потрібно запустити, використовуючи 32-бітну версію утиліти, щоб мати можливість належним чином отримати доступ до файлу Excel через менеджер з'єднань Excel.

    Я створив пакет "обгортки" SSIS, який використовує завдання "Виконати процес", який викликає 32-бітну (замість 64 бітну) утиліту DTExec і передає команду відкрити вихідний пакет.

    Виконати завдання завдання

  2. Мені також потрібно було встановити 32-бітну версію перерозподілюваної бази даних Microsoft Access Database Engine 2010 .

Подальше читання:

Microsoft.ACE.OLEDB.12.0 не зареєстровано (переповнення стека)


2

Установка 32-розрядного двигуна доступу та робота в 32-бітному режимі працювала для мене!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.