SSIS 2012: Die Umgebungsreferenz n ist dem Projekt nicht zugeordnet


7

Ich habe ein Paket, das ich aktualisiere. Das Paket wird von einem Job Agent-Job ausgeführt. Nachdem ich das Paket gelöscht und dann die neue Version bereitgestellt habe, führe ich ein Skript aus, das alle erforderlichen Anweisungen [create_environment], [create_environment_reference], [create_environment_variable] und [set_object_parameter_value] ausführt.

Wenn ich den Job starte, schlägt dies jedoch mit der folgenden Fehlermeldung fehl (wobei "n" eine Zahl ist, die in keiner der relevanten SSISDB-Tabellen oder -Ansichten als ID jeglicher Art angezeigt wird):

Die Umgebungsreferenz n ist dem Projekt nicht zugeordnet

Antworten:


12

Der Grund dafür ist, dass der vorhandene Jobschritt, der das Paket ausführt, einen / ENVREFERENCE-Schalter in der Befehlszeile enthält und dieser Wert für die neue Version des Pakets aktualisiert werden muss.

Dies ist nicht offensichtlich, da die Verwendung von SSMS zum Anzeigen des Jobschritts diesen Schalter nirgendwo anzeigt. Die einzige Möglichkeit, die ich gefunden habe, um dies zu beheben, besteht darin, einen Drop-Out-Vorgang auszuführen und den Job zu erstellen und die richtige reference_id mit folgendem Code zu erhalten:

SELECT  reference_id
  FROM  SSISDB.[catalog].environment_references er
        JOIN SSISDB.[catalog].projects p ON p.project_id = er.project_id
 WHERE  er.environment_name = @Environment
   AND  p.name              = @ProjectName;

und dann Aktualisieren des @ command-Parameters des Aufrufs von sp_add_jobstep mit der neuen Nummer.

Hilfreiche Referenzen (die Sie bei der Suche nach der Fehlermeldung nicht finden):


Die Umgebung muss außerdem mindestens einem Paket hinzugefügt werden, bevor sie in angezeigt wird environment_references.
Nick.McDermaid

3

Alter Beitrag, aber um anderen zu helfen, und möglicherweise eine Lösung: Wenn das SSIS-Paket von einem Job ausgeführt wird, werden die im SSIS-Projektkatalog festgelegten Referenzen verwendet.

Wenn Sie ein SSIS-Projekt erneut bereitstellen, gehen diese Referenzen verloren und Sie müssen sie im SSIS-Katalog zurücksetzen.

Unter SSMS> Instanz verbinden> Baum öffnen Integration Services-Kataloge> SSIDB> Projekte> Klicken Sie mit der rechten Maustaste auf das Projekt, das das im SQL Agent-Job ausgeführte Paket enthält. Klicken Sie auf Konfigurieren> Klicken Sie auf Verweise

Ist die Referenz noch da? Wenn nicht, fügen Sie es erneut hinzu. Sie können dies auch als SQL-Skript nach der Bereitstellung skripten.


1

Sie können das Erstellen der Referenz, der Umgebungsvariablen und der Zuordnung zum Parameter mit folgenden Skripten ausführen:

  1. catalog.create_environment_reference (um das Projekt mit der Umgebung zu verknüpfen)
  2. catalog.create_environment_variable (um verschiedene Werte in Ihrer Umgebung zu erstellen)
  3. catalog.set_object_parameter_value (um die Umgebungsvariable dem Parameter zuzuweisen)

Wenn Sie dies vor dem Erstellen des Agentenjobs tun, können Sie die Umgebungsreferenz-ID in Ihrem Befehlstext zur Erstellung des Agentenjobs verwenden.


Dies scheint Informationen zu wiederholen, die bereits in meiner Antwort enthalten sind. Es fügt jedoch ein wenig Detail hinzu.
Mark Freeman
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.