web-dev-qa-db-ger.com

SSIS, wie die Verbindungszeichenfolge dynamisch aus einer Konfigurationsdatei festgelegt wird

Ich verwende SQL Server Integration Services (SSIS) in SQL Server Business Intelligent Development Studio.

Ich muss eine Aufgabe machen, die wie folgt ist. Ich muss aus einer Quellendatenbank lesen und sie in eine flache Zieldatei ablegen. Gleichzeitig sollte die Quellendatenbank jedoch konfigurierbar sein.

Das bedeutet, dass sich die Verbindungszeichenfolge im OLEDB-Verbindungsmanager dynamisch ändern muss. Diese Verbindungszeichenfolge sollte aus einer Konfigurations-/XML-/Flat-Datei stammen.

Ich habe gelesen, dass ich Variablen und Ausdrücke verwenden kann, um die Verbindungszeichenfolge dynamisch zu ändern. Aber wie lese ich den Wert der Verbindungszeichenfolge aus einer Datei config/XML/flat und setze die Variable?

Diesen Teil kann ich nicht machen. Ist dies der richtige Weg, um dies zu erreichen? Können wir web.config-Dateien zu einem SSIS-Projekt hinzufügen?

40
SNA

Fügen Sie zunächst eine Variable zu Ihrem SSIS-Paket hinzu (Package Scope) - Ich habe FileName, OleRootFilePath, OleProperties, OleProvider verwendet. Der Typ für jede Variable ist "Zeichenfolge". Dann erstelle ich eine Konfigurationsdatei (Wähle jede Variable - Wert) - fülle die Werte in der Konfigurationsdatei auf - zB: für OleProperties - Microsoft.ACE.OLEDB.12.0; für OleProperties - Excel 8.0; HDR =, OleRootFilePath - Ihr Excel-Dateipfad, FileName - FileName

Im Verbindungsmanager setze ich den Ausdruck Eigenschaften -> Ausdrücke -> Verbindungszeichenfolge dynamisch ein, z.

 "Provider =" + @ [User :: OleProvider] + "Data Source =" + @ [User :: OleRootFilePath] 
 + @ [User :: FileName] + "; Erweiterte Eigenschaften = \" "+ @ [User :: OleProperties] + "NO \" "+"; "

Sobald Sie die Variablenwerte festgelegt und in Ihrer Konfigurationsdatei geändert haben, ändert sich die Verbindungszeichenfolge dynamisch. Dies hilft insbesondere beim Wechsel von Entwicklungs- zu Produktionsumgebungen.

30
Lekha Mathew

Einige Optionen:

  1. Sie können das Execute Package Utility verwenden, um Ihre Datenquelle zu ändern, bevor Sie das Paket ausführen. 

  2. Sie können Ihr Paket mit DTEXEC ausführen und Ihre Verbindung ändern, indem Sie einen/CONNECTION-Parameter übergeben. Speichern Sie es wahrscheinlich als Stapel, so dass Sie beim nächsten Mal nicht das Ganze eingeben müssen und nur die Datenquelle nach Bedarf ändern müssen.

  3. Sie können die SSIS XML package-Konfigurationsdatei verwenden. Hier ist ein walk durch .

  4. Sie können Ihre Konfigurationen in einer Datenbanktabelle speichern.

26
Darnell

Hier finden Sie einige Hintergrundinformationen zu dem Mechanismus, den Sie verwenden sollten, Paketkonfigurationen genannt: Grundlegendes zu Integration Services-Paketkonfigurationen . In diesem Artikel werden fünf Arten von Konfigurationen beschrieben:

  • XML-Konfigurationsdatei
  • Umgebungsvariable
  • Registrierungseintrag
  • Übergeordnete Paketvariable
  • SQL Server

Im Folgenden erfahren Sie, wie Sie eine Konfiguration für einen Verbindungs-Manager einrichten: SSIS-Paketkonfiguration für SQL Server Integration Services - Ich weiß, dass dies eine Umgebungsvariable für die Verbindungszeichenfolge ist (keine gute Idee), aber die Grundlagen sind identisch eine XML-Datei verwenden. Die einzigen Schritte, die Sie in dieser exemplarischen Vorgehensweise ändern müssen, sind der Konfigurationstyp und dann ein Pfad.

10
Todd McDermid

Gehe zu Paketeigenschaften-> Konfigurationen-> Paketkonfigurationen aktivieren -> Hinzufügen-> XML-Konfigurationsdatei-> DTSCONFIG-Datei angeben -> Klicken Sie auf Weiter Das fertige Paket ist somit konfiguriert.

Sie können in diesem Prozess auch eine Umgebungsvariable hinzufügen

2
Sangeetha Bolla

Diese Antworten sind richtig, aber alt und funktioniert für Depoloyement Package Model. Was ich eigentlich brauche, ist den Servernamen und den Datenbanknamen eines Verbindungsmanagers zu ändern. 

https://www.youtube.com/watch?v=_yLAwTHH_GA

Besser für Benutzer von SQL Server 2012-2014-2016 ... mit Deployment Project Model

0
Khalil Liraqui