Сбой пакета служб 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).

После тщательного изучения этого вопроса, я предложил попробовать:

  1. запуск пакета в 32-битной версии путем изменения свойства выполнения в задании SQL и изменения моего свойства RunIn64BitMode с true на false
    • что не удается, потому что " Option "/X86"недопустим".
  2. установить исправление 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. Это скомпилирует пакет, если нет проблем, мешающих его компиляции. Затем СОХРАНИТЕ, вернитесь назад и убедитесь, что вы нажимаете "ОКЕЙ", а не "Отмена". Если вы нажмете "Отмена", то все возвращается назад.

Другие вопросы по тегам