Eigenschaften eines SSIS Paketes mittels DTSProperty auslesen

Heute noch schnell eine Antwort auf eine Frage aus der Community.

In meinen "The Developer Side of Microsoft Business Intelligence" Vorträgen verweise des Öfteren darauf, dass es möglich ist die Eigenschaften eines SSIS Paketes bzw. eines Taskhosts eines Paketes auszulesen. Hier meine übliche Folie dazu.

image 

Nur wie können nun die Eigenschaften ausgelesen werden ohne, dass man weiß wie die Eigenschaften denn nun im Detail jeweils heißen?

Da hilft mein bester Freund, die "foreach" Schleife, weiter! Und ein klein wenig müssen wir auch mit Try-Catch arbeiten.

Hier der Code, um die grundlegenden Eigenschaften eines Paketes auszulesen:

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

           DialogResult result = openFileDialog1.ShowDialog();
           if(result == DialogResult.OK)
           {
               Package p = app.LoadPackage(openFileDialog1.FileName, null);
               foreach (DtsProperty dp in p.Properties)
                   {
                       try
                       {
                           listBox2.Items.Add(dp.Name +" = "+ dp.GetValue(p).ToString());
                       }
                       catch
                       {
                           listBox2.Items.Add(dp.Name + " <Error> ");
                       }
                   } 
          }

image

Und so sieht das dann in meiner "offiziellen" Demo Anwendung aus. Hoffe doch sehr, dass hilft Euch bei Euren Dokumentationsprojekten weiter! Wenn nicht, dann einfach fragen.