Как изменить версию задачи скрипта в SSIS?

10

Я добавил задачу сценария в проект служб SSIS в VS2015. При развертывании на SQL Server 2016 я получил сообщение об ошибке, что version 15.0сценарий не поддерживается.

Где это version 15 come from? Читая другие подобные вопросы о переполнении стека, я вижу, что вы можете установить целевую версию проекта на SQL Server 2012, что я и сделал (конечной целью развертывания является SQL Server 2012).

Я также попытался удалить и заново создать задачу скрипта. И в информации скрипта говорится, что он использует V10 C #.

Как я могу решить это?

Задача сценария: ошибка: при загрузке задачи сценария из XML возникла исключительная ситуация: System.Exception: задача сценария "" ST_a1ad9dc5972c42b68c12a13155f10b6d "" использует сценарий версии 15.0, который не поддерживается в этом выпуске служб Integration Services. Чтобы запустить пакет, используйте задачу «Сценарий» для создания нового сценария VSTA. В большинстве случаев сценарии автоматически преобразуются для использования поддерживаемой версии, когда вы открываете пакет служб интеграции SQL Server в% SQL_PRODUCT_SHORT_NAME% Integration Services. в Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML (XmlElement elemProj, события IDTSInfoEvents) »

Я также открыл проект в SSDT 2012 и перестроил его под другим именем. Та же ошибка. Кажется, должна быть ссылка, которая не была удалена или что-то в этом роде.

Ни одно из решений по этому вопросу ( /programming/34893267/ssis-script-task-vs15-not-work-when-deploy-on-sql-server-2014 ) не сработало.

Глядя на XML в пакете, где находится скрипт, я легко могу найти эту задачу, и нигде нет ссылки на версию 15.

=========== РЕДАКТИРОВАТЬ

После копирования проекта на компьютер, на котором размещена база данных, открытие VS2015 и его развертывание, пакет выполняется.

А потом, когда возвращаешься к моей машине и строишь там, это не так.

Это ошибка? Или я делаю что-то глупое, ожидая, что при сборке будет создан тот же мастер развертывания, что и при использовании мастера из VS ...

У меня есть SQL Server 2016 (13.0.4411.0), ssisdbимеет версию схемы (13.0.1601.5).

Я использую пакет служб интеграции, созданный в Visual Studio 2015. Компонент сценария имеет путь: C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\VSTA14_IS_ST_CS_Template.vstaxон не позволяет мне выполнить пакет через каталог служб интеграции (из-за сообщения, полученного Заком). Однако, похоже, что он позволит мне выполнить его через файловую систему (используя агент SQL). Не уверен, что это работает, обновит его после завершения пакета.

Зак Смит
источник
Я заметил то же самое при указании версий пакета. Я создал свой проект и скопировал мастер, забыв изменить целевую версию SQL Server. Я получил ошибку, что целевая версия была слишком высокой. Когда я перестраивался с исправленной целевой версией, я получил ту же ошибку, несмотря на то, что в XML показана исправленная целевая версия
Зак Смит

Ответы:

5

Я считаю, что у меня та же проблема, и вот обходной путь, который преодолел мою проблему.

Сначала детали:

  • У меня есть SQL Server 2016 (13.0.4411.0)
  • SSISDB имеет версию схемы (13.0.1601.5)
  • Я использую пакет услуг по интеграции, созданный в Visual Studio
  • Компонент сценария (который утверждает, что это C # 2015) имеет путь: C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ DTS \ Binn \ VSTA14_IS_ST_CS_Template.vstax

Если я разверну в каталоге через SSMS, он не позволит мне выполнить пакет через каталог сервисов интеграции (из-за сообщения, полученного Zach - версия 15.0 не поддерживается).

Обходной путь:

Если я разверну пакет через Visual Studio в «Каталог служб Integration Services» в нужном экземпляре, это сообщение исчезнет, ​​и проект будет успешно выполнен. Это не идеально, поскольку мы должны иметь возможность развертывания через SSMS, но это означает, что проект может прогрессировать.

Иан Джейкоб
источник
1
Я хотел бы знать, почему обходной путь работает.
Зак Смит
4

Мой DBA наконец-то понял это для меня, и проблема заключалась в том, что я развертывал через SSMS 2017, не осознавая этого. Сообщение об ошибке сбило меня с толку, но ваш обходной путь помог найти причину неудачи. Я думаю, вы можете попробовать SSMS 2016 и посмотреть, работает ли это. Другой способ, предложенный моим администратором базы данных, - использовать командную строку. Примерно так: выделено 130, поскольку это версия, которая вам нужна на 2016 год:

"C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\ISDeploymentWizard.exe" 
/Silent /ModelType:Project 
/SourcePath:"E:\ssis\Project Path\bin\Development\Project.ispac" 
/DestinationServer:"server01" 
/DestinationPath:"/SSISDB/Projects/Project"

Я надеюсь, что это поможет прояснить это. Я работал над этим долгое время, прежде чем нашел ваш обходной путь и, наконец, нашел это решение. Тогда спасибо!

Дэйв Е
источник
что вы подразумеваете под "развертыванием через SSMS 2017, не осознавая этого"? Я использую VS 2017 для развертывания ... и есть настройка, которая позволяет вам определить версию SQL Server, на которую вы ориентируетесь. Но я обнаружил, что это не сработало
Зак Смит
Это сработало для меня. Развертывание напрямую из SSDT работало, но мы не могли сделать это удаленно, развертывание через SSMS 2017 не работало, а затем с помощью параметра командной строки через 2016 ISDeploymentWizard.exe работало. Спасибо!
Clinemi
0

Аналогично другим, я изначально развернул на SQL2014 с помощью мастера развертывания SQL2017. Это привело к ошибке во время выполнения. Когда я использовал мастер развертывания SQL2014, все работало нормально.

носки
источник
-1

Я думал, что добавлю к этому, поскольку я получаю ту же ошибку. Я использую VS 2017 и развертываю на SQL Server 2016. Я прочитал немало статей, а потом понял, как легко мне было это исправить. VS 2017 имеет отличную обратную совместимость.

Эта статья об изменении версии пакета служб SSIS в соответствии с версией целевого сервера помогла мне устранить ошибку в моем случае.

Clint
источник
Обратите внимание, что ОП сказал, что он попытался изменить целевой сервер в своем случае, но это не сработало. Конечно (как отмечено в статье), если бы он использовал функцию, недоступную в целевой версии, вещи не сработали бы из-за этого.
RDFozz
Да - просто изменение целевой версии не сработало. Однако изменение целевой версии и последующее локальное развертывание через VS 2017 сработало - так что я подозреваю ошибку в VS 2017 (по крайней мере, когда я задал вопрос) в отношении того, как создается мастер развертывания. (Я предполагаю, что, так как этот подход работал, я не использовал несовместимые функции)
Зак Смит