Como alterar uma versão da tarefa de script no SSIS?

10

Adicionei uma tarefa de script a um projeto SSIS no VS2015. Quando implantei no SQL Server 2016, recebi uma mensagem de erro informando que o version 15.0script não é suportado.

Onde isso acontece version 15 come from? Lendo outras perguntas semelhantes no estouro de pilha, vejo que você pode definir a versão de destino do projeto para o SQL Server 2012 - o que fiz (o destino de implantação eventual é o SQL Server 2012).

Também tentei excluir e recriar a tarefa de script. E nas informações do script, ele diz que está usando a V10 de C #.

Como posso resolver isto?

Tarefa de script: erro: houve uma exceção ao carregar a tarefa de script do XML: System.Exception: a tarefa de script "" ST_a1ad9dc5972c42b68c12a13155f10b6d "" usa o script da versão 15.0 que não é suportada nesta versão do Integration Services. Para executar o pacote, use a Tarefa de Script para criar um novo script VSTA. Na maioria dos casos, os scripts são convertidos automaticamente para usar uma versão suportada, quando você abre um pacote do SQL Server Integration Services no% SQL_PRODUCT_SHORT_NAME% Integration Services. em Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML (eventos XmlElement elemProj, IDTSInfoEvents) "

Também abri o projeto no SSDT 2012 e reconstruí-lo com um nome diferente. Mesmo erro. Parece que deve haver uma referência que não foi excluída ou algo assim.

Nenhuma das soluções nesta questão ( /programming/34893267/ssis-script-task-vs15-not-work-when-deploy-on-sql-server-2014 ) funcionou.

Observando o XML no pacote onde está o script, posso encontrar facilmente essa tarefa e não há referência à versão 15 em nenhum lugar.

=========== EDITAR

Após copiar o projeto para a máquina que hospeda o banco de dados, abrindo o VS2015 e implantando a partir daí, o pacote é executado.

E então, quando volto para minha máquina e construo lá, isso não acontece.

Isso é um inseto? Ou estou fazendo algo estúpido, esperando que a compilação produza o mesmo assistente de implantação que o uso do assistente do VS ...

Eu tenho o SQL Server 2016 (13.0.4411.0), ssisdbtem a versão do esquema (13.0.1601.5).

Estou usando um pacote de serviços de integração criado no visual studio 2015. O componente de script tem o caminho: C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\VSTA14_IS_ST_CS_Template.vstaxele não me permite executar o pacote através do catálogo de serviços de integração (devido à mensagem exibida pelo Zach). No entanto, parece que ele me permitirá executá-lo através do sistema de arquivos (usando o SQL Agent). Sem saber se isso está funcionando, isso será atualizado assim que o pacote for concluído.

Zach Smith
fonte
Percebi o mesmo ao especificar versões de pacotes. Criei meu projeto e copiei o assistente esquecendo de alterar a versão de destino do SQL Server. Ocorreu um erro ao constatar que a versão de destino estava muito alta. Quando eu reconstruída com a versão de destino corrigido Eu tenho o mesmo erro, apesar de que o XML mostrou a versão de destino corrigido
Zach Smith

Respostas:

5

Acredito que tenho o mesmo problema, e aqui está a solução que solucionou meu problema.

Detalhes primeiro:

  • Eu tenho o sql server 2016 (13.0.4411.0)
  • O SSISDB possui a versão do esquema (13.0.1601.5)
  • Estou usando um pacote de serviços de integração criado no visual studio
  • O componente de script (que indica 2015 C #) tem o caminho: C: \ Arquivos de Programas (x86) \ Microsoft SQL Server \ 130 \ DTS \ Binn \ VSTA14_IS_ST_CS_Template.vstax

Se eu implantar no catálogo através do SSMS, ele não me permitirá executar o pacote através do catálogo de serviços de integração (devido à mensagem exibida pelo Zach - versão 15.0 não suportada).

A solução alternativa:

Se eu implantar o pacote através do Visual Studio no 'Catálogo do Integration Services' na instância necessária, essa mensagem desaparecerá e o projeto será executado com êxito. Isso não é ideal, pois deveríamos ser capazes de implantar por meio do SSMS, mas significava que o projeto pode progredir.

Iain Jacob
fonte
11
Gostaria de saber por que a solução alternativa funciona.
Zach Smith
4

Meu DBA finalmente descobriu isso para mim e o problema era que eu estava implantando o SSMS 2017 sem perceber. A mensagem de erro me desviou, mas sua solução alternativa ajudou a levar ao raciocínio por trás da falha. Eu acho que você pode tentar o SSMS 2016 e ver se isso funciona. A outra maneira que meu DBA sugeriu é usar a linha de comando. Algo assim, com 130 destacados, já que é a versão que você precisa para 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"

Espero que ajude a esclarecer isso. Eu trabalhei nisso por muito, muito tempo antes de encontrar sua solução alternativa e, finalmente, encontrar essa solução. Então obrigado!

Dave E
fonte
o que você quer dizer com "implantando através do SSMS 2017 sem perceber"? Eu uso o VS 2017 para implantar .. e há uma configuração que permite definir a versão do SQL Server que você está direcionando. Mas eu achei que não funcionou
Zach Smith
Isso funcionou para mim. A implantação direta do SSDT funcionou, mas não foi possível fazer isso remotamente, a implantação via SSMS 2017 não funcionou e, em seguida, o uso da opção de linha de comando via ISDeploymentWizard.exe 2016 funcionou. Obrigado!
Clinemi 4/03/19
0

Seguindo linhas semelhantes a outras, originalmente implantei no SQL2014 usando o assistente de implantação do SQL2017. Isso produziu o erro de tempo de execução. Quando usei o assistente de implantação do SQL2014, tudo funcionou bem.

Sox
fonte
-1

Eu pensei em acrescentar isso, pois estava recebendo o mesmo erro. Estou executando o VS 2017 e implantando em um SQL Server 2016. Li alguns artigos e percebi o quão fácil era para eu consertar isso. O VS 2017 possui excelente compatibilidade com versões anteriores.

Este artigo sobre como alterar a versão de um pacote SSIS para corresponder à versão do servidor de destino me ajudou a resolver o erro no meu caso.

Clint
fonte
Observe que o OP disse que tentou alterar o servidor de destino no seu caso, mas não funcionou. Obviamente (como observado no artigo), se ele tivesse usado um recurso não disponível na versão de destino, as coisas não funcionariam por causa disso.
22418 RDFozz
Sim - apenas alterar a versão de destino não funcionou. No entanto, alterar a versão de destino e, em seguida, implantar localmente no VS 2017 funcionou - por isso, suspeito de um bug no VS 2017 (pelo menos quando fiz a pergunta) em relação à forma como o assistente de implantação é criado. (Estou assumindo uma vez que esta abordagem funcionou que eu não usar os recursos incompatíveis)
Zach Smith