.NET を使用して SSIS パッケージからメタ データを抽出しています。
OLEDB ソース (ステートメントに変数を使用しない) とその宛先からマッピング情報を抽出する方法はありますか?
はい。ただし、そのためには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.ManagedDTS
、Microsoft.SqlServer.DtsPipelineWrap
およびDLLへの参照が必要になることに注意してください。Microsoft.SqlServer.DtsRuntimeWrap