Пакет служб SSIS не работает как 32bit в SQL Server 2012
У меня есть пакет, который я разработал в VS2012 (используя компонент SQL Data Tools), который собирает данные из файла DBF с помощью поставщика VFPOLEDB и помещает его в базу данных на сервере SQL Server 2012 X64. Проект, содержащий пакет имеет DebugOption Run64BitRuntime значение false. Я импортировал этот пакет в хранилище пакетов служб SSIS тестового и живого сервера (идентичные настройки). Поставщик VFPOLEDB установлен на обоих, и я могу видеть в реестре обеих машин что это есть для 32bit версий.
пакет отлично работает на тестовой машине, но не работает на живой машине. Живой экземпляр SQL не распознает 32-разрядный поставщик VFPOLEDB, который установлен.
единственное различие в экземплярах SQL заключается в том, что в живой среде настроен каталог службы интеграции, где, как и в тесте, нет. Глядя на журналы серверов, когда live запускается, он запускает sp_ssis_startup, а затем регистрирует сообщения о загрузке небезопасных сборок. Этот SP не запускается в тестовой среде, так как нет каталога.
задания, которые я создаю, имеют флаг, установленный для использования 32-битной среды выполнения, но я не могу не чувствовать, что каталог служб SSIS имеет проблему с vfpoledb, который я использую, и не загружает его.
Я действительно ничего не знаю о каталоге SSIS, поэтому кто-нибудь может предложить любое направление, в котором я мог бы двигаться?
обновление: Вот моя конфигурация шага работы. Установлен флаг 32-битной среды выполнения.
обновление #2:
- поставщик OLEDB установлен соответствующим образом.
- на обеих машинах установлена одна и та же версия поставщика.
- в OBDCAD32.exe показывает те же версии поставщика VFPOLEDB. DSNs не определены ни на одной машине. У моей локальной машины есть DSNs, поэтому я попробую добавить один в файлы dBASE и посмотреть, поможет ли это.
- в процессе попыток теперь этот шаг. Я ищу способ использовать инструмент dtexec без его создания каталога SSISDB. Хотя я удалил существующий каталог служб SSIS и остановил выполнение sp_ssis_startup при запуске службы. Я не видел записей журнала о небезопасной сборке, но задание все равно завершилось с той же ошибкой, что и всегда. Я сообщу об этом 4 и, возможно, попрошу дальнейших указаний.
обновление #3:
Я только что проверил и тест и жить окружающая среда не так идентична, как я первоначально утверждал. Сервер не имеет 32-разрядной версии программы dtexec.exe (хотя я не думал, что это будет иметь значение как TechNet говорит, что задания, выполняемые с агентом SQL Server, всегда будут использовать 64-битную версию. Я думаю, что использовал x86 и i64 ISO для настройки тестовой среды, но только 64-битную версию для live. Изменение этого потребует, я полагаю, удаления общего компонента служб Integration Services из live box и переустановка его с двойным iso.
Я думаю, установка опции "Использовать 32-битную среду выполнения" работает только в том случае, если есть 32-битная версия для использования? Это могло бы все объяснить.
2 ответов
по умолчанию, все будет работать в 64-разрядных серверов. Чтобы изменить это поведение, вам нужно указать, что 32-битная версия программы dtexec должен быть использован. Для SSISDB 2012 у нас есть два простых способа вызова наших пакетов: SQL Agent и catalog.start_execution
метод.
каталог.start_execution
для одного пакета обслуживания работает, вы можете найти пакет в каталоге SSISDB и щелкните правой кнопкой мыши на них, чтобы Execute...
в результате всплывающее диалоговое окно, вам нужно будет перейти на вкладку Advanced и проверяем
Если вы хотите запустить пакет из 64-разрядного задания агента SQL Server в 32-разрядном режиме, выберите тип шага задания o-->операционная система и введите командную строку или используйте пакетный файл, вызывающий 32-разрядную версию dtexec.exe
: компакт-диска "C:\Program файлы (х86)\\корпорация Майкрософт SQL сервер 120\ДЦ\Бинн\" Программы dtexec.exe / f "C:\Download\Root\SQL пакет.dtsx-файл"или команды: "Файлы C:\Program (х86)\\корпорация Майкрософт SQL сервер 120\ДЦ\Бинн\программы dtexec.файл EXE "C:\Download\Root\SQL Пакет.dtsx "/ MAXCONCURRENT " -1 "/CHECKPOINTING OFF / REPORTING V / CONSOLELOG NCOSGXMT
Примечание: я использовал 64-разрядную версию SQL 2014.