SSIS - Задача сценария... использовать сценарий версии 15.0, который не поддерживается в этом выпуске интегрированной службы
Привет, я ищу руководство.
Я разработал проект SSIS с парой задач сценариев и компонентов сценария, используя Visual Studio 2015 для целевой версии 2016.
У меня есть два сервера среды A и сервер B, на которых установлен SSIS 2016 SP1.
Я выполнил проект, развернутый из пакетов на сервер А, и проверил, все пакеты выполнены отлично. Однако, когда я развернул пакеты в SSIS_DB с сервера A на сервер B I, я получил эти ошибки в своем отчете о выполнении.
Метаданные компонента "script component, clsid { }" не могут быть обновлены до более новой версии компонента. Сбой метода PerformUpgrade
2
Возникла исключительная ситуация при загрузке задачи сценария из XML: System.Exception: задача сценария "" использует сценарий версии 15.0, который не поддерживается в этом выпуске служб Integration Services. Чтобы запустить пакет, используйте задачу "Сценарий" для создания нового сценария VSTA. В большинстве случаев сценарии автоматически преобразуются для использования поддерживаемой версии при открытии пакета служб интеграции SQL Server в%SQL_PRODUCT_SHORT_NAME% служб интеграции. в Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML(события XmlElement elemProj, IDTSInfoEvents)
Интересно, что если я разверну свои пакеты непосредственно из Visual Studio на сервере B, они будут выполнены без проблем. Так что, похоже, существуют несоответствия между сервером A и сервером B.
Небольшая предыстория этого заключается в том, что когда были построены оба сервера, на сервере A был установлен Microsoft SQL Server 2016 (SP1-GDR) и сервер Microsoft SQL Server 2016 (окончательная первоначальная версия), но теперь оба сервера имеют Microsoft SQL Server 2016 (SP1-GDR) после сервера B был обновлен. Я не уверен, как обновление было выполнено по моему подозрению, что SSIS на сервере разные, но я не могу доказать это. когда я проверяю версию, они оба возвращают одинаковые или похожие метаданные
1 ответ
Это было вызвано SSMS. Я не знаю, что происходит внутри, но во время развертывания я использовал SSMS 2017, которая, кажется, обновляет компоненты сценариев в моих пакетах. Я перешел на использование SSMS 2016 и эта проблема исчезла
Правильный ответ здесь: https://andyleonard.blog/2017/09/ssis-version-15-0-script-error/
В моем случае проблема заключалась в том, что на уровне проекта "TargetServerLevel" установлено значение "SQL Server 2017". Правильное значение должно быть "SQL Server 2016". После изменения значения и повторного развертывания проекта ошибки исчезают. Я считаю, что один из разработчиков в моей команде использовал VS 2017, когда добавил проект. Все остальные задачи и компоненты, кроме скрипта, работали хорошо даже при неверной версии сервера, и проблема возникала только тогда, когда мне приходилось использовать задачи и компоненты скрипта. Чтобы устранить проблему, откройте параметры проекта => Свойства конфигурации => TargetServerVersion Выберите "SQL Server 2016", а затем разверните на сервере.
Просто резюмирую некоторые вещи, потому что есть несколько причин столкнуться с этой проблемой:
- Вы развертываете пакет с определением целевой версии для другого SQL Server.
- Вы развертываете пакет, который содержит задачу сценария с другой версией SSMS, чем версия SQL Server.
Если ваш пакет, например, не содержит задачи сценария, то любая версия SSMS может развернуть пакет в любой версии SQL Server через каталог SSISDB. Не знаю, почему это происходит. Похоже, вы можете развертывать и выполнять пакеты, убедившись, что целевая версия пакета поддерживается из версии SQL, но также, если у вас есть ScriptTask внутри, вам нужно быть очень осторожным и убедиться, что версия служб интеграции SSMS такая же с версией SQL Server.
Я открою вопрос к Microsoft, просто чтобы быть уверенным, почему задача скрипта имеет такую обработку. Может быть, потому, что задача сценария зависит от платформы.