จะเปลี่ยนเวอร์ชั่นภารกิจของสคริปต์ใน SSIS ได้อย่างไร?


10

ฉันเพิ่มงานสคริปต์ในโครงการ SSIS ใน VS2015 เมื่อฉันปรับใช้กับ SQL Server 2016 ฉันได้รับข้อความแสดงข้อผิดพลาดว่าversion 15.0สคริปต์ไม่ได้รับการสนับสนุน

ที่ไหนนี้ไม่version 15 come from? อ่านคำถามที่คล้ายกันอื่น ๆ เกี่ยวกับ Stack Overflow ฉันเห็นว่าคุณสามารถตั้งค่าเวอร์ชันเป้าหมายของโครงการเป็น SQL Server 2012 - ซึ่งฉันทำ (เป้าหมายการปรับใช้ในที่สุดคือ SQL Server 2012)

ฉันพยายามลบและสร้างงานสคริปต์ใหม่ และในข้อมูลของสคริปต์มันบอกว่ามันใช้ V10 ของ C #

ฉันจะแก้ไขปัญหานี้ได้อย่างไร

งานสคริปต์: ข้อผิดพลาด:มีข้อยกเว้นในขณะโหลดงานสคริปต์จาก XML: System.Exception: งานสคริปต์ "" ST_a1ad9dc5972c42b68c12a13155f10b6d "" ใช้สคริปต์เวอร์ชัน 15.0 ที่ไม่ได้รับการสนับสนุนใน Integration Services รุ่นนี้ หากต้องการเรียกใช้แพคเกจให้ใช้งานงานสคริปต์เพื่อสร้างสคริปต์ VSTA ใหม่ ในกรณีส่วนใหญ่สคริปต์จะถูกแปลงโดยอัตโนมัติเพื่อใช้รุ่นที่รองรับเมื่อคุณเปิดแพ็คเกจบริการการรวมเซิร์ฟเวอร์ SQL ใน% SQL_PRODUCT_SHORT_NAME% บริการการรวม ที่ 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มันจะไม่ให้ฉันดำเนินการแพคเกจผ่านทางแคตตาล็อกบริการการรวม (เนื่องจากข้อความที่มีประสบการณ์โดย Zach) อย่างไรก็ตามปรากฏว่ามันจะให้ฉันดำเนินการผ่านระบบไฟล์ (ใช้ตัวแทน SQL) ไม่แน่ใจว่าใช้งานได้หรือไม่จะอัปเดตเมื่อแพ็คเกจเสร็จสมบูรณ์


ฉันสังเกตเห็นเหมือนกันเมื่อระบุรุ่นแพ็คเกจ ฉันสร้างโครงการของฉันและคัดลอกตัวช่วยสร้างโดยลืมที่จะเปลี่ยนรุ่นเป้าหมายของ SQL Server ฉันได้รับข้อผิดพลาดว่ารุ่นเป้าหมายสูงเกินไป เมื่อฉันสร้างใหม่ด้วยเวอร์ชันเป้าหมายที่แก้ไขแล้วฉันได้รับข้อผิดพลาดเดียวกันแม้ว่า XML จะแสดงเวอร์ชันเป้าหมายที่แก้ไขแล้ว
Zach Smith

คำตอบ:


5

ฉันเชื่อว่าฉันมีปัญหาเดียวกันและนี่คือการแก้ไขปัญหาที่เกิดขึ้นกับปัญหาของฉัน

รายละเอียดแรก:

  • ฉันมีเซิร์ฟเวอร์ sql 2016 (13.0.4411.0)
  • SSISDB มีรุ่นของสคีมา (13.0.1601.5)
  • ฉันใช้แพ็คเกจการรวมบริการที่สร้างใน visual studio
  • องค์ประกอบสคริปต์ (ซึ่งระบุว่าเป็น 2015 C #) มีเส้นทาง: C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ DTS \ Binn \ VSTA14_IS_ST_CS_Template.vstax

ถ้าฉันปรับใช้กับแคตตาล็อกผ่าน SSMS มันจะไม่ให้ฉันรันแพ็กเกจผ่านแค็ตตาล็อกเซอร์วิสการรวม (เนื่องจากข้อความที่ Zach - ไม่รองรับเวอร์ชัน 15.0)

วิธีแก้ปัญหา:

ถ้าฉันปรับใช้แพคเกจผ่าน Visual Studio เพื่อ 'Integration Services Catalog' ในอินสแตนซ์ที่ต้องการข้อความนี้จะหายไปและโครงการทำงานได้สำเร็จ สิ่งนี้ไม่เหมาะอย่างยิ่งที่เราจะสามารถปรับใช้ผ่าน SSMS แต่หมายความว่าโครงการสามารถดำเนินการต่อไปได้


1
ฉันชอบที่จะรู้ว่าทำไมการแก้ปัญหาใช้งานได้
Zach Smith

4

ในที่สุด DBA ของฉันก็พบสิ่งนี้สำหรับฉันและปัญหาก็คือว่าฉันกำลังนำไปใช้งานผ่าน SSMS 2017 โดยที่ไม่รู้ตัว ข้อความแสดงข้อผิดพลาดทำให้ฉันหลงทาง แต่วิธีแก้ปัญหาของคุณช่วยนำไปสู่การให้เหตุผลหลังความล้มเหลว ฉันเดาว่าคุณสามารถลอง SSMS 2016 และดูว่าใช้ได้หรือไม่ วิธีอื่นที่ DBA ของฉันแนะนำคือใช้บรรทัดคำสั่ง บางสิ่งเช่นนี้โดยมีไฮไลต์ 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 ที่คุณกำหนดเป้าหมายได้ แต่ฉันพบว่าไม่ได้ผล
Zach Smith เมื่อ

สิ่งนี้ใช้ได้สำหรับฉัน การปรับใช้โดยตรงจาก SSDT ทำงานได้ แต่เราไม่สามารถทำได้จากระยะไกลการปรับใช้ผ่าน SSMS 2017 จะไม่ทำงานจากนั้นใช้ตัวเลือกบรรทัดคำสั่งผ่านทาง 2016 ISDeploymentWizard.exe ขอบคุณ!
Clinemi

0

ตามบรรทัดที่คล้ายกันกับคนอื่น ๆ ฉันเริ่มปรับใช้กับ SQL2014 โดยใช้ตัวช่วยสร้างการปรับใช้ SQL2017 สิ่งนี้ทำให้เกิดข้อผิดพลาดรันไทม์ เมื่อฉันใช้ตัวช่วยสร้างการปรับใช้ SQL2014 ทุกอย่างทำงานได้ดี


-1

ฉันคิดว่าฉันจะเพิ่มในสิ่งนี้เนื่องจากฉันได้รับข้อผิดพลาดเดียวกัน ฉันใช้ VS 2017 และปรับใช้กับ SQL Server 2016 ฉันอ่านบทความไม่กี่บทความจากนั้นก็รู้ว่ามันง่ายแค่ไหนที่ฉันจะแก้ไขปัญหานี้ VS 2017 มีความเข้ากันได้ดีมาก

บทความเกี่ยวกับการเปลี่ยนรุ่นของแพคเกจ SSIS ให้ตรงกับรุ่นของเซิร์ฟเวอร์เป้าหมายของคุณช่วยฉันแก้ไขข้อผิดพลาดในกรณีของฉัน


โปรดทราบว่า OP กล่าวว่าเขาพยายามเปลี่ยนเซิร์ฟเวอร์เป้าหมายในกรณีของเขา แต่มันไม่ทำงาน แน่นอน (ตามที่ระบุไว้ในบทความ) ถ้าเขาใช้คุณลักษณะที่ไม่มีในเวอร์ชันเป้าหมายสิ่งต่าง ๆ จะไม่ทำงานเพราะสิ่งนั้น
RDFozz

ใช่ - เพียงแค่เปลี่ยนรุ่นเป้าหมายไม่ทำงาน อย่างไรก็ตามการเปลี่ยนเวอร์ชันเป้าหมายและการปรับใช้ภายในเครื่องผ่าน VS 2017 ทำงานได้ - ดังนั้นฉันจึงสงสัยว่าข้อผิดพลาดใน VS 2017 (อย่างน้อยเมื่อฉันถามคำถาม) เกี่ยวกับวิธีการสร้างตัวช่วยสร้างการปรับใช้ (ฉันคาดว่าเนื่องจากวิธีการนี้ใช้ได้ผลที่ฉันไม่ได้ใช้คุณสมบัติที่เข้ากันไม่ได้)
Zach Smith
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.