Wie ändere ich eine Skriptaufgabenversion in SSIS?

10

Ich habe einem SSIS-Projekt in VS2015 eine Skriptaufgabe hinzugefügt. Bei der Bereitstellung auf SQL Server 2016 wurde die Fehlermeldung angezeigt, dass das version 15.0Skript nicht unterstützt wird.

Wo geht das version 15 come from? Beim Lesen anderer, ähnlicher Fragen zum Stapelüberlauf wird angezeigt, dass Sie die Zielversion des Projekts auf SQL Server 2012 festlegen können - was ich auch getan habe (das endgültige Bereitstellungsziel ist SQL Server 2012).

Ich habe auch versucht, die Skriptaufgabe zu löschen und neu zu erstellen. In den Informationen des Skripts heißt es, dass V10 von C # verwendet wird.

Wie kann ich das beheben?

Skriptaufgabe: Fehler: Beim Laden der Skriptaufgabe aus XML ist eine Ausnahme aufgetreten: System.Exception: Die Skriptaufgabe "" ST_a1ad9dc5972c42b68c12a13155f10b6d "" verwendet ein Skript der Version 15.0, das in dieser Version von Integration Services nicht unterstützt wird. Verwenden Sie zum Ausführen des Pakets die Skriptaufgabe, um ein neues VSTA-Skript zu erstellen. In den meisten Fällen werden Skripts automatisch konvertiert, um eine unterstützte Version zu verwenden, wenn Sie ein SQL Server Integration Services-Paket in% SQL_PRODUCT_SHORT_NAME% Integration Services öffnen. bei Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML (XmlElement elemProj, IDTSInfoEvents-Ereignisse) "

Ich habe das Projekt auch in SSDT 2012 geöffnet und unter einem anderen Namen neu erstellt. Gleicher Fehler. Es scheint, dass es eine Referenz geben muss, die nicht gelöscht wurde oder so.

Keine der Lösungen für diese Frage ( /programming/34893267/ssis-script-task-vs15-not-work-when-deploy-on-sql-server-2014 ) hat funktioniert.

Wenn ich mir das XML in dem Paket ansehe, in dem sich das Skript befindet, kann ich diese Aufgabe leicht finden, und es gibt nirgendwo einen Verweis auf Version 15.

=========== BEARBEITEN

Nachdem das Projekt auf den Computer kopiert wurde, auf dem sich die Datenbank befindet, VS2015 geöffnet und von dort aus bereitgestellt wurde, wird das Paket ausgeführt.

Und wenn ich dann zu meiner Maschine zurückkehre und dort baue, tut es das nicht.

Ist das ein Fehler? Oder mache ich etwas Dummes, indem ich erwarte, dass der Build denselben Bereitstellungsassistenten erzeugt wie der Assistent von VS ...

Ich habe SQL Server 2016 (13.0.4411.0), ssisdbhat die Schema-Version (13.0.1601.5).

Ich verwende ein in Visual Studio 2015 erstelltes Integrationsservicepaket. Die Skriptkomponente hat den folgenden Pfad: C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\VSTA14_IS_ST_CS_Template.vstaxIch kann das Paket nicht über den Integrationsservicekatalog ausführen (aufgrund der Meldung von Zach). Es scheint jedoch, dass ich es über das Dateisystem ausführen kann (mit SQL Agent). Wenn Sie sich nicht sicher sind, ob dies funktioniert, wird dies aktualisiert, sobald das Paket abgeschlossen ist.

Zach Smith
quelle
Ich habe das gleiche bei der Angabe von Paketversionen bemerkt. Ich habe mein Projekt erstellt und den Assistenten kopiert, um zu vergessen, die SQL Server-Zielversion zu ändern. Ich habe die Fehlermeldung erhalten, dass die Zielversion zu hoch war. Als ich mit der korrigierten Zielversion neu erstellt habe, habe ich den gleichen Fehler erhalten, obwohl das XML die korrigierte Zielversion zeigte
Zach Smith

Antworten:

5

Ich glaube, ich habe das gleiche Problem, und hier ist die Arbeit, die mein Problem gelöst hat.

Details zuerst:

  • Ich habe SQL Server 2016 (13.0.4411.0)
  • SSISDB hat die Schemaversion (13.0.1601.5)
  • Ich verwende ein Integrationsservicepaket, das in Visual Studio erstellt wurde
  • Die Skriptkomponente (die angibt, dass es sich um 2015 C # handelt) hat den Pfad: C: \ Programme (x86) \ Microsoft SQL Server \ 130 \ DTS \ Binn \ VSTA14_IS_ST_CS_Template.vstax

Wenn ich über SSMS für den Katalog bereitstelle, kann ich das Paket nicht über den Integrationsdienstkatalog ausführen (aufgrund der Meldung von Zach - Version 15.0 wird nicht unterstützt).

Die Problemumgehung:

Wenn ich das Paket über Visual Studio im 'Integration Services-Katalog' auf der erforderlichen Instanz bereitstelle, wird diese Meldung ausgeblendet und das Projekt wird erfolgreich ausgeführt. Dies ist nicht ideal, da wir in der Lage sein sollten, über SSMS bereitzustellen, aber dies bedeutet, dass das Projekt fortgesetzt werden kann.

Iain Jacob
quelle
1
Ich würde gerne wissen, warum die Problemumgehung funktioniert.
Zach Smith
4

Mein DBA hat dies endlich für mich herausgefunden und das Problem war, dass ich über SSMS 2017 bereitgestellt habe, ohne es zu merken. Die Fehlermeldung hat mich in die Irre geführt, aber Ihre Problemumgehung hat zu den Gründen für den Fehler geführt. Ich denke, Sie können SSMS 2016 ausprobieren und sehen, ob das funktioniert. Der andere von meinem DBA vorgeschlagene Weg ist die Verwendung der Befehlszeile. So etwas mit 130 hervorgehoben, da dies die Version ist, die Sie für 2016 benötigen:

"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"

Ich hoffe, das hilft, das aufzuklären. Ich habe lange, lange daran gearbeitet, bevor ich Ihre Problemumgehung gefunden und schließlich diese Lösung gefunden habe. So danke!

Dave E.
quelle
Was meinen Sie mit "Bereitstellung über SSMS 2017, ohne es zu merken"? Ich verwende VS 2017 für die Bereitstellung. Es gibt eine Einstellung, mit der Sie die Version von SQL Server definieren können, auf die Sie abzielen. Aber ich fand, dass das nicht funktionierte
Zach Smith
Das hat bei mir funktioniert. Die Bereitstellung direkt von SSDT aus hat funktioniert, aber wir konnten dies nicht remote tun. Die Bereitstellung über SSMS 2017 würde nicht funktionieren. Die Verwendung der Befehlszeilenoption über ISDeploymentWizard.exe 2016 hat dann funktioniert. Vielen Dank!
Clinemi
0

Ähnlich wie bei anderen habe ich ursprünglich mithilfe des SQL2017-Bereitstellungsassistenten für SQL2014 bereitgestellt. Dies erzeugte den Laufzeitfehler. Als ich den SQL2014-Bereitstellungsassistenten verwendet habe, hat alles einwandfrei funktioniert.

Sox
quelle
-1

Ich dachte, ich würde das ergänzen, da ich den gleichen Fehler bekam. Ich verwende VS 2017 und stelle es auf einem SQL Server 2016 bereit. Ich las einige Artikel und stellte dann fest, wie einfach es für mich war, dies zu beheben. VS 2017 bietet eine hervorragende Abwärtskompatibilität.

Dieser Artikel zum Ändern der Version eines SSIS-Pakets an die Version Ihres Zielservers hat mir geholfen, den Fehler in meinem Fall zu beheben.

Clint
quelle
Beachten Sie, dass das OP sagte, er habe versucht, den Zielserver in seinem Fall zu ändern, aber es hat nicht funktioniert. Natürlich (wie im Artikel erwähnt) würden die Dinge aus diesem Grund nicht funktionieren, wenn er eine Funktion verwendet hätte, die in der Zielversion nicht verfügbar ist.
RDFozz
Ja - nur das Ändern der Zielversion hat nicht funktioniert. Das Ändern der Zielversion und das anschließende lokale Bereitstellen über VS 2017 hat jedoch funktioniert. Daher vermute ich einen Fehler in VS 2017 (zumindest als ich die Frage gestellt habe) hinsichtlich der Erstellung des Bereitstellungsassistenten. (Ich gehe davon aus, dass dieser Ansatz funktioniert hat, dass ich keine inkompatiblen Funktionen verwendet habe)
Zach Smith