Samstag, 30. April 2011

SSIS (Integration Services) als ETL Lösung – Package Tools im Eigenbau – Teil 2 – Connection Manager auslesen

Hier ist der nächste Teil meiner kleinen Reihe über die Entwicklung von eigenen Werkzeugen für das Auslesen und Verändern von SSIS Paketen (dtsx).

Wie bereits im ersten Teil, machen wir noch was ganz harmloses und lesen dieses Mal die Verbindungsmanager eines Paketes aus. Das Codebeispiel dient für den Moment hauptsächlich dazu, zu zeigen wie einfach der Zugriff auf einzelne Eigenschaften eines SSIS Paketes ist. Des Weiteren demonstriere ich noch, wie wir bereits hier auf die Verwendung von Expressions prüfen können. Expressions, also die Arbeit mit dynamischen Ausdrücken innerhalb einer SSIS Lösung, lassen äußerst mächtige Architekturen möglich werden, sind aber in der späteren Wartung ein wenig tricky, wenn der Verantwortliche für den Betrieb der Lösung nicht immer hundertprozentig weiß, wofür gerade überall Ausdrücke verwendet werden. Gerade im Zusammenspiel mit mehrstufigen Paket-Konfigurationen kann die Fehlersuche durchaus anspruchsvoll werden. Aber deswegen bauen wir uns ja einen eigenen Satz Werkzeuge, um später den Überblick zu behalten.

Hier das entsprechende Codefragment, welches wieder ein Paket öffnet und alle Verbindungen ausliest. Und über GetExpression wird auf die Verwendung der Eigenschaft ConnectionString geprüft.

app = new Microsoft.SqlServer.Dts.Runtime.Application();

DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
    p = app.LoadPackage(openFileDialog1.FileName, null); // Hier haben wir unser Paket in 'p'

    foreach (ConnectionManager ConMan in p.Connections)
    {
        listBox1.Items.Add(ConMan.CreationName + " - " + ConMan.ConnectionString);

        String ExConString = ConMan.GetExpression("ConnectionString");
        if (ExConString != null)
            listBox1.Items.Add("ConnectionString Expression -> "+ExConString);

    }

}