Я создал пакет служб SSIS, который импортирует файл Excel в таблицу SQL Server.
Пакет служб SSIS запускается без каких-либо проблем, когда я запускаю его локально на своем компьютере, но когда я запускаю его на сервере, на котором будет запланирован пакет, я получаю сообщение об ошибке ниже (из текстового файла я выводю ошибки с использованием ведения журнала служб SSIS).
После исследования единственные рекомендации, которые я смог найти, - установить для свойства Run64BitRuntime значение false, что я и сделал, но все же не повезло. Я сомневаюсь, что именно это и является причиной моей ошибки, потому что ошибка не указывает ничего относительно 64-битного (как было в статьях, которые я нашел).
Я также подумал, что, возможно, сервер не имеет соответствующих драйверов Excel, но я тоже не думаю, что это так, потому что обычно в сообщении об ошибке говорится что-то о том, что драйверы не зарегистрированы.
В настоящее время у меня нет доступа к удаленному серверу. Я могу только загрузить пакет в папку, а затем он запускается приложением, поэтому единственные сообщения об ошибках, которые я вижу, - это то, что находится в текстовом журнале ошибок, который я создал.
Код ошибки DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. Вызов метода AcquireConnection для диспетчера соединений «Envision» завершился ошибкой с кодом ошибки 0xC0209303. До этого могут быть сообщения об ошибках с дополнительной информацией о том, почему произошел сбой вызова метода AcquireConnection.
«Envision» - это имя моего менеджера соединений с Excel.
Я заполняю путь к файлу Excel и строку подключения, используя выражения.
Выражение строки подключения выглядит так:
"Provider = Microsoft.ACE.OLEDB.12.0; Источник данных =" + @ [User :: SourceFilePath] + "; Расширенные свойства = \" EXCEL 12.0 XML; HDR = YES \ ";"
Пакет SSIS выполняется именем пользователя / учетной записью Windows. Я думаю, что это может быть учетная запись веб-служб. (BDS_sprtIIS)
У кого-нибудь есть какие-либо решения или предложения относительно того, как решить эту проблему пакета, работающего только на моем локальном компьютере, но не на фактическом сервере, на котором пакет будет развернут?
Я нашел ответ ниже на другом форуме, может ли это быть причиной моих проблем? Они в основном говорят, что диспетчер соединений Excel пытается получить доступ к временной папке пользователя по какой-то причине, и если у него нет доступа к этой папке, то произойдет сбой:
Я также заметил, что драйвер Microsoft.JET.OLEDB.4.0 попытается прочитать временный каталог под профилем вошедшего в систему пользователя.
,
... Мы запускаем наших агентов SQL с использованием учетной записи домена более низкого уровня и запускаем наши пакеты служб SSIS с использованием учетной записи-посредника. Вы правы, поскольку Procmon подтвердил это и для меня. Я дал права учетной записи прокси-сервера на временный каталог профиля (C: \ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp), и это сработало!
Я не использую использование заданий SQL Server или учетных записей прокси. Пакет просто выполняется учетной записью Windows, скорее всего, через скрипт командной строки.
Учетная запись Windows имеет доступ к файлу, но я не уверен, имеет ли он доступ к папке «TEMP» (на которую я никогда не ссылаюсь в пакете, поэтому я не знаю, зачем ему нужен доступ к этой папке) ...
источник