none
Dynamische Source Server auswählen beim Ausführen des Paketes (XML Config) RRS feed

  • Frage

  • Hallo Zusammen, ich habe 2 Source Server SRC1(Test), SRC2(Prod) und ein Target Server TGT1. Bei der Entwicklung Source wurde SRC1(Test) festgelegt. Bei Paketkonfiguration erzeuge ich eine XML Datei und alle Drei Verbindungen stehen als Connection Strings in XML. Danach Paket wurde auf dem SRC1(Test) deployed. Jetzt wenn ich das Paket ausführe, möchte ich nicht SRC1(Test) sondern SRC2(Prod) als Source haben bzw. Daten müssen von SRC2(Prod) nach TGT1 transferiert werden. In Execute Package Utility unter Connection Managers wählte ich nur SRC2(Prod) und TGT1 aber Datentransfer ist immer von SRC1(Test) (nur weil beim Design als Source festgelegt habe)? Hat jemand eine Idee was ich falsch mache oder wie kann man das Problem mit XML Config Datei lösen? Ich habe gemerkt es wird immer die XML Datei wird gelesen aber nur für Targt. Vielen Dank im Voraus Viele Grüße Danimian
    Dienstag, 6. Dezember 2011 15:09

Antworten

  • Hallo Danimian,
    in der Konfigurationsdatei darf nur die Verbindungsinformation für einen QuellServer liegen. Auf jeden Server kommt eine eigene Konfigurationsdatei. Das Paket verwendet die lokale Konfigurationsdatei und verwendet die einzige dort vorhandene Verbindung für die Quelle.

    In Deinem Paket dürfte ja auch nur die eine Verbindung wirklich verwendet werden, oder?
    Benenne diese am besten auch nicht QuellServerX oder so, sondern ganz allgemein "Quelle". Dann gibt es keine Verwirrung, wenn die Verbindung mal auf einen anderen Server zeigt.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    • Als Antwort markiert danimian Freitag, 9. Dezember 2011 09:16
    Donnerstag, 8. Dezember 2011 07:17
  • Hallo Danimian,
    wen diese Config-Datei bereits mit dem gleichen (lokalen) Pfad auf dem Entwickler-Rechner existierte, musst Du eigentlich nichts unternehmen. Dann findet er auch die Datei unter dem gleichen lokalen Pfad auf dem Server, wenn Du sie dorthin kopiert hast.

    Ansonsten kannst Du im Job in der Lasche Konfigurationen die Datei angeben.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    • Als Antwort markiert danimian Freitag, 9. Dezember 2011 09:16
    Freitag, 9. Dezember 2011 08:11

Alle Antworten

  • Ich mache es immer so, daß ich im SSIS Paket nur Source und Destination Connection habe.

    Dann erstelle ich für jede Umgebung ein Config-File. Die Verzeichnisstruktur ist auf allen Umgebungen dieselbe, z.B. D:\SSIS\Config.
    Die Pakete finden dann immer die richtige Configuration.

    Mittwoch, 7. Dezember 2011 07:21
  • Guten Morgen,

    das bedeutet wenn Dein Paket auf dem Server SRC1(Test) deployed ist, beim ausführen kannst Du nur vom SRC1(Test) die Daten holen. Und wenn Du vom SRC2(Prod) die Daten holen möchtest, deployed Du selben Paket zuerst auf SRC2(Prod) und führst Du aus. Für beide Ausführung die selbe xml config file mit alle Verbindung Einträge. Stimmt es oder verstehe ich falsch? 

    Muss Du kein User Variables (Mit InitialCatalog, Servername, usw...) deklarieren?

    Viele Grüße

     

    Mittwoch, 7. Dezember 2011 08:58
  • Hallo danimian!
    Was Christa beschrieben hat bedeutet, dass die Paketkonfiguration lokal auf dem Server liegt. Auf jedem Server existiert dieser Pfad. Das Paket holt sich dann die Konfiguration aus diesem lokalen Pfad. Auf dem Entwickler-PC liegt die Konfiguration auch noch einmal lokal.
    Verwendest Du einen UNC-Pfad, funktioniert es nicht mehr, da dann jedes Paket auf den gleichen UNC-Pfad zugreift.

    Ich verwende sogar lieber die Konfiguration in einer SQL Server Tabelle, die ich über eine Verbindung mit Alias anspreche. Siehe hierzu auch:
    http://www.insidesql.org/blogs/cmu/sql_server/ssis-pakete-verteilen

    Diese Konfiguration kann man auch noch einfach mit Update ändern, falls es die aktuellen Gegebenheiten erfordern.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    Mittwoch, 7. Dezember 2011 09:07
  • Ach Christoph, Du weißt doch immer, was ich sagen will ;-)

    Ja, genau so ist es.
    Ich muß keine Variablen deklarieren, ich kann. Du kannst die Connections indirekt konfigurieren (mit den Variablen) oder direkt.

    Ich verwende bei einigen Kunden auch gemischte Konfiguration, d.h. ich konfiguriere mit dem XML-File nur die Connection zu dem Server, wo die weiteren Konfigurationen abgelegt sind. Kommt immer auf die Policies beim Kunden an.

    Bei unterschiedlichen Verzeichnisstrukturen auf Dev, Test und Prod nehme ich auch mal eine Umgebungsvariable, die den Pfad zum XML-File enthält. Das läßt aber nicht jeder Admin zu.

    Mittwoch, 7. Dezember 2011 09:24
  • Hallo Christa,

    Ich benutze auch keine Variabeln.

    Das Paket ist auf dem Client entwickelt, bei der Entwicklung meine Quelle ist QuellServerX(lokal).

    Dann wurde ein konfigurationsdatei als xml erstellt. Diese beihaltet die Verbindungsinformationen von alle Drei QuellServern (QuellServerX, QuellServerA, QuellServerB) und ein ZielServer.

    Jetzt deploy ich dieses Paket auf QuellServerA oder QuellServerB von Client aus. Auf beide QuellServern (A und B) liegt die xml config Datei unter dem Pfad C\MS SQL Server\100\DTS\Packages\myProject\myCofig.dtsConfig. Führe ich das Paket aus und füge ich die xml Datei zu aber der beim ausführen wird nur QuellServerX gelesen weil das ich bei der Entwicklung in meinem Paket festgelegt habe.

    Ich verstehe nicht was ich machen soll?

     

    Viele Grüße

    Danimian

    Mittwoch, 7. Dezember 2011 20:29
  • Hallo Danimian,
    in der Konfigurationsdatei darf nur die Verbindungsinformation für einen QuellServer liegen. Auf jeden Server kommt eine eigene Konfigurationsdatei. Das Paket verwendet die lokale Konfigurationsdatei und verwendet die einzige dort vorhandene Verbindung für die Quelle.

    In Deinem Paket dürfte ja auch nur die eine Verbindung wirklich verwendet werden, oder?
    Benenne diese am besten auch nicht QuellServerX oder so, sondern ganz allgemein "Quelle". Dann gibt es keine Verwirrung, wenn die Verbindung mal auf einen anderen Server zeigt.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    • Als Antwort markiert danimian Freitag, 9. Dezember 2011 09:16
    Donnerstag, 8. Dezember 2011 07:17
  • Hallo Christoph,

    vielen Dank für deine Hilfe.

    Ich verwende jetzt Quelle als Name für die Verbindung, diese auf dem selben oder anderen Server zeigt. Früher waren verschiedene Name für Quellen in die Konfigurationsdatei eingegeben und jetzt gleiche Name kann mehrere Quellen referenzieren. Also das Problem hat sich gelöst und mein Paket ist dynamisch :-)

    Jetzt noch eine Frage: Wie bindet man diese xml config Datei bei der Automatisierte Paketausführung?

     

    Viele Grüße und einen schönen Tag

    Danimian

     

     


    • Bearbeitet danimian Donnerstag, 8. Dezember 2011 16:01
    Donnerstag, 8. Dezember 2011 14:49
  • Hallo Danimian,
    wen diese Config-Datei bereits mit dem gleichen (lokalen) Pfad auf dem Entwickler-Rechner existierte, musst Du eigentlich nichts unternehmen. Dann findet er auch die Datei unter dem gleichen lokalen Pfad auf dem Server, wenn Du sie dorthin kopiert hast.

    Ansonsten kannst Du im Job in der Lasche Konfigurationen die Datei angeben.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    • Als Antwort markiert danimian Freitag, 9. Dezember 2011 09:16
    Freitag, 9. Dezember 2011 08:11
  • Hallo Christoph,

    vielen herzlichen Dank.

     

    Viele Grüße und ein schönes Wochenende

    Danimian

    Freitag, 9. Dezember 2011 09:18