代码之家  ›  专栏  ›  技术社区  ›  Andriy

分析SSIS包

  •  2
  • Andriy  · 技术社区  · 7 年前

    我在文件系统的文件夹中有几个.DTSX包。
    我尝试使用下一个脚本从包中提取其他信息:

    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();
                }
            }
        }
    
    
    }
    

    我得到下一个错误:

    enter image description here

    请帮我解决这个问题。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Hadi    7 年前

    SSIS包 .dtsx 文件是XML文件,因此可以使用XML解析器和其他技术、正则表达式来获取其信息。您可以使用sql、.net和其他技术来实现这一点。

    你可以按照我对以下问题的详细回答:

    此外,如果您正在寻找反向工程,您可以检查以下链接: