У нас есть серия пакетов служб интеграции 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» и протестировать соединение, я получаю сообщение об ошибке «Тестовое соединение не удалось из-за ошибки при инициализации поставщика. Неизвестная ошибка» .
Я почти не понимаю, что еще я могу попробовать, и вообще ищу любую помощь, даже если он пытается то, что я уже пробовал, может быть, я что-то неправильно настроил, пытаясь их изначально, не уверен.
Любая помощь будет безмерно признательна!