2017-10-10 1 views
0

Beim Ausführen eines SSIS-Pakets auf SQL Server 2014 (v12.0.5556) scheint es, Skriptaufgaben zu überspringen. Das Testpaket macht folgende:Gibt es eine Konfigurationseinstellung in SSIS 2014, die dazu führen würde, dass eine Skriptaufgabe übersprungen wird?

  • eine Variable X definiert und initialisiert es auf 0
  • Verwendet ein Script Task den Wert von X bis 1
  • Branchen zu setzen, basierend auf dem Wert von X

Da die Skriptaufgabe X = 1 setzt, sollte es immer Verzweigung zu der Aufgabe namens Wert ist 1. Es funktioniert, wenn es in VS 2015 ausgeführt wird.

Bei Bereitstellung auf SQL Server (lokaler Computer oder Server) verzweigt es zu Wert ist 0, als ob die Skriptaufgabe nie ausgeführt wurde. Die SSIS-Protokolle zeigen jedoch, dass die Aufgabe erfolgreich ausgeführt wurde.

Gibt es Einstellungen im SQL-Server oder im Paket, die dazu führen würden, dass Skriptaufgaben bei der Bereitstellung auf SQL Server übersprungen werden?

Hier ist das Paket: The Test Package

Der User :: X-Variable wird als ReadWriteVariable gesetzt. Hier ist der Code im Skript-Aufgabe:

public void Main() 
    { 
     Dts.Variables["User::X"].Value = 1; 
     Dts.TaskResult = (int)ScriptResults.Success; 
    } 

Hier ist das Ergebnis, wenn in Visual Studio ausgeführt (zu Wert verzweigt 1): enter image description here

Hier ist das Ergebnis, wenn in SQL Server ausgeführt werden (es zu Wert Filialen 0): enter image description here

+0

die Tatsache, dass die grünen Pfeile ein wenig „Fx“ haben, bedeutet, dass es eine Einschränkung drin. Wenn Sie auf sie doppelklicken, können Sie sehen, welche Einschränkung – Lamak

+0

@ Lamak ist, die absichtlich war. Die Bedingungen überprüfen den Wert von X und verzweigen zu der entsprechenden Aufgabe. Ich habe dies getan, um zu zeigen, dass der Wert von X gesetzt ist, wenn er in VS ausgeführt wird, aber nicht gesetzt ist, wenn er in SS ausgeführt wird. –

+0

versuchen, dies stattdessen zu schreiben Dts.Variables ["User :: MyIntegerVariable"]. Wert = Convert.ToInt32 (Dts.Variables ["User :: MyIntegerVariable"]. Wert) + 1; – plaidDK

Antwort

Verwandte Themen