1

.NET を使用して SSIS パッケージからメタ データを抽出しています。

OLEDB ソース (ステートメントに変数を使用しない) とその宛先からマッピング情報を抽出する方法はありますか?

4

1 に答える 1

1

はい。ただし、そのためにはIDTSPipeline100と関連するインターフェイスの雑草を深く掘り下げる必要があります。

using System;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;

namespace CSharpConsoleApp
{
    class PackageDemo
    {
        public void CountColumns(string packagePath, string dataFlowName)
        {
            Application app = new Application();
            Package package = app.LoadPackage(packagePath, null);

            TaskHost th = package.Executables[dataFlowName] as TaskHost;
            MainPipe mp = th.InnerObject as MainPipe;
            foreach (IDTSComponentMetaData100 md in mp.ComponentMetaDataCollection)
            {
                foreach (IDTSOutput100 output in md.OutputCollection)
                {
                    Console.WriteLine("Component {0} output {1} has {2} columns", 
                        md.Name, output.Name, output.OutputColumnCollection.Count);
                    foreach (IDTSOutputColumn100 column in output.OutputColumnCollection)
                    {
                        Console.WriteLine("\tcolumn {0} ({1}) is of type {2}", 
                            column.ID, column.Name, column.DataType);
                    }
                }
            }
        }
    }
}

このコードをコンパイルするにはMicrosoft.SqlServer.ManagedDTSMicrosoft.SqlServer.DtsPipelineWrapおよびDLLへの参照が必要になることに注意してください。Microsoft.SqlServer.DtsRuntimeWrap

于 2013-02-08T16:53:16.857 に答える