Пакет SSIS не работает после перехода на 64-разрядную версию

У нас есть серия пакетов служб интеграции SQL Server, которые копируют данные из нескольких баз данных MS Access в базу данных SQL Server 2008. Существует один родительский пакет, который вызывает различные подпакеты, и этот родительский пакет инициируется пользователем, который запускает файл .bat, который выполняет пакет следующим образом:

dtexec /f "\\networkshare\package.dtsx" /CHECKPOINTING OFF /REPORTING EWCDI

Это прекрасно работало несколько лет. Наш ИТ-отдел начал обновление наших рабочих станций с 32-разрядной Windows XP до 64-разрядной Windows 7, и, поскольку они обновили рабочие станции этих пользователей, пакет не работал, давая ошибку

-1071607037,0x, код ошибки SSIS DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR. Запрошенный поставщик OLE DB MICROSOFT.JET.OLEDB.4.0 не зарегистрирован - возможно, 64-разрядный поставщик недоступен. Код ошибки: 0x00000000. Доступна запись OLE DB. Источник: «Компоненты службы Microsoft OLE DB» Результат: 0x80040154 Описание: «Класс не зарегистрирован».

Моя рабочая станция еще не была обновлена ​​с Windows XP, и я все еще могу запускать пакеты, но моя возможность отложить обновление заканчивается, и мне нужно как можно скорее найти решение. Я нашел много статей и сообщений, связанных с этим, пытаясь решить эту проблему. Среди вещей, которые я пробовал:

  • Убедившись, что у пользователей установлены клиентские инструменты и Business Intelligence Development Studio и что путь действителен, измените содержимое файла .bat, указав конкретную ссылку на «C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ DTS». \ Binn \ dtexec.exe »в надежде, что будет использован 32-битный JET-провайдер.
  • Исследовал параметр Run64BitRuntime, но, похоже, это влияет только на отладку и мне не поможет.
  • Исследовано добавление флага / X86 в командную строку, но, согласно статье MSDN о dtexec, это имеет эффект только в том случае, если агент SQL Server выполняет задачу.
  • Последнее, что я пробовал, - это установить распространяемый компонент Microsoft Access Database Engine 2010 и изменить строку подключения с «Provider = Microsoft.Jet.OLEDB.4.0;» на «Provider = Microsoft.ACE.OLEDB.12.0;». Кажется, я не могу оторваться от земли с этим. Если я попытаюсь создать новое соединение в BIDS и установить для поставщика значение «Microsoft Office 12.0 Access Database Engine OLE DB Provider» и протестировать соединение, я получаю сообщение об ошибке «Тестовое соединение не удалось из-за ошибки при инициализации поставщика. Неизвестная ошибка» .

Я почти не понимаю, что еще я могу попробовать, и вообще ищу любую помощь, даже если он пытается то, что я уже пробовал, может быть, я что-то неправильно настроил, пытаясь их изначально, не уверен.

Любая помощь будет безмерно признательна!


person Supermercado    schedule 28.03.2013    source источник
comment
Как вызываются подпакеты? Родительский пакет может работать в 32-битном пространстве, но, в зависимости от того, как вызываются подпрограммы, они могут работать в 64-битном пространстве.   -  person billinkc    schedule 28.03.2013
comment
Вы можете получить 64-битные драйверы ACE на сайте microsoft.com/en -ie / download / details.aspx? id = 13255 Они обратно совместимы.   -  person Fionnuala    schedule 28.03.2013
comment
@billinkc Подпакеты вызываются из родительского пакета с помощью задачи «Выполнить пакет». Я не уверен, где я это видел, но если я правильно помню, вчера я видел статью, которая, казалось, указала, что такие вещи, как 32/64-битные, будут стекать из родительского пакета   -  person Supermercado    schedule 28.03.2013
comment
@Remou На этой странице я загрузил драйвер, прежде чем пытаться изменить поставщика в строке подключения на Microsoft.ACE.OLEDB.12.0. Однако я не могу заставить это работать после его установки.   -  person Supermercado    schedule 28.03.2013
comment
Ты прав. Я думал о запуске в том же пространстве флага процесса. Итак, когда вы запускаете его с помощью dtexec в x86, вы получаете такую ​​же ошибку? Есть ли шанс, что вы тоже используете DSN?   -  person billinkc    schedule 28.03.2013


Ответы (3)


В задании агента SQL или просто выполняя пакет отдельно, есть вкладка под названием «Параметры выполнения», вы можете выбрать опцию «Использовать 32-разрядную среду выполнения».

person fausto    schedule 05.11.2013
comment
Это сработало для меня. Этот параметр находится на вкладках параметров шага редактирования. - person Francisco; 26.05.2015

По умолчанию SQL Server помещает в путь 64-разрядную версию DTEXEC. 32-разрядная версия должна находиться где-то вроде C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ DTS \ Binn, и ее нужно будет вызывать напрямую. У меня была такая же проблема с драйверами ACE и файлами Excel.

Дополнительную информацию см. В this.

person Nathan Clayton    schedule 29.03.2013

Мне удалось запустить его успешно, изменив настройку отладки на странице свойств проекта. Свойство, которое нужно изменить: Run64BitRuntime -> установите значение false.

person deepak    schedule 12.11.2014