Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse SSIS package

I have several .dtsx packages in the folder on file system.
I try to extract additional information from the package with next script:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Microsoft.SqlServer.Server;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts;

namespace ImportDataFromPackage
{
    class Program
    {
        static void Main(string[] args)
        {
            //  The pkg variable points to a package
            //  installed with the SSIS samples.
            string pkg = @"D:\MyFolder\Ryder_project\testpackage\ACS\ACS_Available_Months.dtsx";

            Application app = new Application();
            Package p1 = app.LoadPackage(pkg, null);
            p1.Description = "CalculatedColumns package";

            app.SaveToDtsServer(p1, null, @"File System\myp1Package", "YOURSERVER");
            PackageInfos pInfos = app.GetDtsServerPackageInfos(@"File System", "YOURSERVER");
            foreach (PackageInfo pinfo in pInfos)
            {
                Console.WriteLine("Package Information");
                Console.WriteLine("CreationDate:        {0}", pinfo.CreationDate);
                Console.WriteLine("Description:         {0}", pinfo.Description);
                Console.WriteLine("Flags:               {0}", pinfo.Flags);
                Console.WriteLine("Folder:              {0}", pinfo.Folder);
                Console.WriteLine("Name:                {0}", pinfo.Name);
                Console.WriteLine("PackageDataSize:     {0}", pinfo.PackageDataSize);
                Console.WriteLine("PackageGuid:         {0}", pinfo.PackageGuid);
                Console.WriteLine("VersionBuild:        {0}", pinfo.VersionBuild);
                Console.WriteLine("VersionComments      {0}", pinfo.VersionComments);
                Console.WriteLine("VersionGUID          {0}", pinfo.VersionGUID);
                Console.WriteLine("VersionMajor         {0}", pinfo.VersionMajor);
                Console.WriteLine("VersionMinor         {0}", pinfo.VersionMinor);
                Console.WriteLine();
            }
        }
    }


}

and I get next error:

enter image description here

Please help me to resolve the problem.

like image 424
Andriy Avatar asked Feb 24 '26 13:02

Andriy


1 Answers

SSIS packages .dtsx files are Xml files, so you can use XML Parser and other techniques, Regular Expressions to get its informations. You can achieve this using SQL, .Net and other technologies.

You can follow my detailed answer to the following question:

  • Automate Version number Retrieval from .Dtsx files

Also if you are looking for a reverse engineering you can check the following link:

  • Reverse engineering SSIS package using C#
like image 139
Hadi Avatar answered Feb 27 '26 02:02

Hadi