Bagaimana cara mengubah versi tugas skrip di SSIS?

10

Saya menambahkan tugas skrip ke proyek SSIS di VS2015. Ketika saya dikerahkan ke SQL Server 2016 saya mendapat pesan kesalahan bahwa version 15.0skrip tidak didukung.

Di mana ini version 15 come from? Membaca pertanyaan serupa lainnya tentang Stack Overflow Saya melihat bahwa Anda dapat mengatur versi target proyek ke SQL Server 2012 - yang saya lakukan (target penyebaran akhirnya adalah SQL Server 2012).

Saya juga mencoba menghapus dan menciptakan kembali tugas skrip. Dan dalam informasi skrip dikatakan menggunakan V10 dari C #.

Bagaimana saya bisa menyelesaikan ini?

Skrip Tugas: Kesalahan: Ada pengecualian saat memuat Skrip Tugas dari XML: System.Exception: Skrip Tugas "" ST_a1ad9dc5972c42b68c12a13155f10b6d "" menggunakan skrip versi 15.0 yang tidak didukung dalam rilis Layanan Integrasi ini. Untuk menjalankan paket, gunakan Tugas Skrip untuk membuat skrip VSTA baru. Dalam kebanyakan kasus, skrip dikonversi secara otomatis untuk menggunakan versi yang didukung, ketika Anda membuka paket Layanan Integrasi Server SQL di% SQL_PRODUCT_SHORT_NAME% Layanan Integrasi. di Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML (XmlElement elemProj, IDTSInfoEvents events) "

Saya juga telah membuka proyek di SSDT 2012 dan dibangun kembali dengan nama yang berbeda. Kesalahan yang sama. Tampaknya harus ada referensi yang tidak dihapus atau semacamnya.

Tidak ada solusi untuk pertanyaan ini ( /programming/34893267/ssis-script-task-vs15-not-work-when-deploy-on-sql-server-2014 ) yang berfungsi.

Melihat XML dalam paket tempat skrip berada, saya dapat dengan mudah menemukan tugas itu, dan tidak ada referensi ke versi 15 di mana pun.

=========== EDIT

Setelah menyalin proyek ke mesin yang meng-host database, membuka VS2015 dan menggunakan dari sana, paket dijalankan.

Dan ketika kembali ke mesin dan membangun di sana, ternyata tidak.

Apakah ini bug? Atau apakah saya melakukan sesuatu yang bodoh dengan mengharapkan build untuk menghasilkan wizard penyebaran yang sama seperti menggunakan wizard dari VS ...

Saya memiliki SQL Server 2016 (13.0.4411.0), ssisdbmemiliki versi skema (13.0.1601.5).

Saya menggunakan paket layanan integrasi yang dibuat di visual studio 2015. Komponen skrip memiliki jalur: C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\VSTA14_IS_ST_CS_Template.vstaxIni tidak akan membiarkan saya menjalankan paket melalui katalog layanan integrasi (karena pesan yang dialami oleh Zach). Namun tampaknya itu akan membiarkan saya menjalankannya melalui sistem file (menggunakan SQL Agent). Tidak yakin apakah ini berfungsi, akan memperbarui ini setelah paket selesai.

Zach Smith
sumber
Saya perhatikan hal yang sama ketika menentukan versi paket. Saya membangun proyek saya dan menyalin wizard di lupa untuk mengubah versi target SQL Server. Saya mendapat kesalahan karena versi Target terlalu tinggi. Ketika saya membangun kembali dengan versi target yang dikoreksi saya mendapat kesalahan yang sama, meskipun itu XML menunjukkan versi target yang dikoreksi
Zach Smith

Jawaban:

5

Saya percaya saya memiliki masalah yang sama, dan inilah pekerjaan yang mengatasi masalah saya.

Detail dulu:

  • Saya memiliki sql server 2016 (13.0.4411.0)
  • SSISDB memiliki versi skema (13.0.1601.5)
  • Saya menggunakan paket layanan integrasi yang dibuat di studio visual
  • Komponen skrip (Yang menyatakan itu adalah 2015 C #) memiliki jalur: C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ DTS \ Binn \ VSTA14_IS_ST_CS_Template.vstax

Jika saya menyebarkan ke katalog melalui SSMS, itu tidak akan membiarkan saya menjalankan paket melalui katalog layanan integrasi (karena pesan yang dialami oleh Zach - versi 15.0 tidak didukung).

Solusi:

Jika saya menggunakan paket melalui Visual Studio ke 'Katalog Layanan Integrasi' pada contoh yang diperlukan, pesan ini hilang dan proyek berjalan dengan sukses. Ini tidak ideal karena kita harus dapat menggunakan SSMS, tetapi berarti bahwa proyek dapat berkembang.

Kecuali Yakub
sumber
1
Saya ingin tahu mengapa pemecahannya berhasil.
Zach Smith
4

DBA saya akhirnya menemukan ini untuk saya dan masalahnya adalah bahwa saya menyebarkan melalui SSMS 2017 tanpa menyadarinya. Pesan kesalahan membuat saya tersesat tetapi solusi Anda membantu mengarah pada alasan di balik kegagalan. Saya kira Anda dapat mencoba SSMS 2016 dan melihat apakah itu berhasil. Cara lain yang disarankan DBA saya adalah menggunakan baris perintah. Sesuatu seperti ini, dengan 130 disorot karena itu adalah versi yang Anda butuhkan untuk 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"

Saya harap ini membantu menjernihkan hal ini. Saya mengerjakannya untuk waktu yang sangat lama sebelum menemukan solusi Anda dan akhirnya menemukan solusi ini. Jadi terima kasih!

Dave E
sumber
apa yang Anda maksud dengan "menggunakan SSMS 2017 tanpa menyadarinya"? Saya menggunakan VS 2017 untuk menyebarkan .. dan ada pengaturan yang memungkinkan Anda untuk menentukan versi SQL Server yang Anda targetkan. Tetapi saya menemukan bahwa itu tidak berhasil
Zach Smith
Ini berhasil untuk saya. Menyebarkan secara langsung dari SSDT berfungsi tetapi kami tidak bisa melakukan itu dari jarak jauh, menggunakan SSMS 2017 tidak akan berfungsi, dan kemudian menggunakan opsi baris perintah melalui ISDeploymentWizard.exe 2016 berhasil. Terima kasih!
Clinemi
0

Sejalan dengan yang lain, saya awalnya dikerahkan ke SQL2014 menggunakan wizard penyebaran SQL2017. Ini menghasilkan kesalahan runtime. Ketika saya menggunakan wizard penyebaran SQL2014 semuanya bekerja dengan baik.

Sox
sumber
-1

Saya pikir saya akan menambah ini, karena saya mendapatkan kesalahan yang sama. Saya menjalankan VS 2017 dan menggunakan SQL Server 2016. Saya membaca beberapa artikel, kemudian menyadari betapa mudahnya bagi saya untuk memperbaikinya. VS 2017 memiliki kompatibilitas yang sangat baik.

Artikel ini tentang mengubah versi paket SSIS agar sesuai dengan versi server target Anda membantu saya mengatasi kesalahan dalam kasus saya.

Clint
sumber
Perhatikan bahwa OP mengatakan dia mencoba mengubah server target dalam kasusnya, tetapi tidak berhasil. Tentu saja (seperti disebutkan dalam artikel), jika dia menggunakan fitur yang tidak tersedia di versi target, hal-hal tidak akan berhasil karena itu.
RDFozz
Ya - hanya mengubah versi target tidak berhasil. Namun, mengubah versi target dan kemudian menyebarkan secara lokal melalui VS 2017 berhasil - jadi saya curiga ada bug di VS 2017 (setidaknya ketika saya mengajukan pertanyaan) berkaitan dengan bagaimana wizard penyebaran dibuat. (Saya berasumsi karena pendekatan ini berhasil, saya tidak menggunakan fitur yang tidak kompatibel)
Zach Smith