Сбой пакета служб SSIS, поскольку "задача сценария не выполняется, так как сценарий предварительно не скомпилирован"
Я разработал довольно простой пакет служб SSIS (в VS2005 с.Net Framework V 2.0.50727 с пакетом обновления 2), который получает список пользователей, отправляемых по электронной почте, запускает контейнер цикла для каждого, а затем выполняет задачу сценария для получения пользовательских данных и отправить его по электронной почте пользователю. Когда я запускаю его на своем компьютере разработчика, все работает отлично и работает как надо. Однако при развертывании пакета на работающем производственном сервере (Microsoft SQL Server 2005 - 9.00.5000.00 (X64) Standard Edition (64-разрядная версия) в Windows NT 5.2 (сборка 3790: пакет обновления 2)) задача не выполняется.
Исходное сообщение об ошибке:
Выполнено от имени пользователя: ххххх. Microsoft (R) SQL Server Execute Package Utility версии 9.00.5000.00 для 64-разрядного кода: 0x00000009 Источник: PackageName Описание: Задача не может быть выполнена в 64-разрядной среде, поскольку сценарий предварительно не скомпилирован. Пожалуйста, включите опцию предварительной компиляции скрипта в редакторе задач. Ошибка завершения... Ошибка DTExec: выполнение пакета вернуло DTSER_FAILURE (1).
После тщательного изучения этого вопроса, я предложил попробовать:
- запуск пакета в 32-битной версии путем изменения свойства выполнения в задании SQL и изменения моего свойства RunIn64BitMode с true на false
- что не удается, потому что " Option "/X86"недопустим".
- установить исправление Microsoft
- который не применяется, так как я уже работаю на SP2
Поэтому после дополнительных исследований я обнаружил, что мне нужно включить "Пожалуйста, включите опцию предварительной компиляции скрипта в редакторе задач". ИСТОЧНИК: ssis-dtsx DOT blogspot DOT com/2010/03/ невозможен-в-64-bit-environment.html Что влечет за собой:
- Убедитесь, что каждая задача скрипта имеет PreCompile = True
- Откройте редактор задач "Сценарий", перейдите на вкладку "Сценарий" и убедитесь, что PrecompileScriptIntoBinaryCode = True
- Нажмите Design Script, чтобы открыть редактор кода (Visual Studio для приложений), а затем выберите его, используя File > Close and Return (VSA перекомпилирует и сохранит двоичный код в пакете).
- Создайте проект и скопируйте в целевое местоположение
Однако, когда я выполняю пакет, я сразу получаю ошибку:
Выполнено от имени пользователя: хххх. ...0.5000.00 для 64-разрядного кода: 0x00000008 Источник: имя_пакета Описание: Задача настроена на предварительную компиляцию сценария, но двоичный код не найден. Посетите IDE в редакторе задач "Сценарий", нажав кнопку "Дизайн сценария", чтобы сгенерировать двоичный код. Код ошибки завершения: 0x00000008 Источник: GET PO infor и Email Описание: Не удалось перекомпилировать или запустить сценарий: получение фабрики классов COM для компонента с CLSID...
Таким образом, мой последний шаг состоял в том, чтобы изменить свойство DelayValidation с False на True в пакете служб SSIS, перейти к сценарию разработки, чтобы его перестроить, затем заново развернуть и запустить снова, и я все еще получаю ту же ошибку.
При поиске ошибки я направлен в Microsoft HOT FIX, которая предложила мне загрузить другое исправление.
Я еще не загрузил исправление и предпочел бы не делать этого, если смогу избежать его (наша команда OP не любит запускать исправления в середине дня на производственных серверах).
1 ответ
Перейдите в пакет, откройте компонент сценария, затем в Visual Studio (глядя на код) нажмите кнопку BUILD. Это скомпилирует пакет, если нет проблем, мешающих его компиляции. Затем СОХРАНИТЕ, вернитесь назад и убедитесь, что вы нажимаете "ОКЕЙ", а не "Отмена". Если вы нажмете "Отмена", то все возвращается назад.