문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

프로그래밍 방식으로 입력 열 선택

프로그래밍 방식으로 구성 요소를 연결한 후에는 업스트림 구성 요소에서 다운스트림 구성 요소로 변환하거나 전달할 열을 선택합니다. 구성 요소의 입력 열을 선택하지 않으면 해당 구성 요소는 데이터 흐름 태스크에서 행을 받지 않습니다.

GetVirtualInput 메서드를 호출하여 업스트림 구성 요소에서 사용 가능한 열 목록을 검색한 다음 디자인 타임 구성 요소 인스턴스의 SetUsageType 메서드를 호출하여 가상 입력 열 컬렉션에서 열을 선택합니다. 이 메서드를 호출하면 구성 요소에서는 업스트림 구성 요소의 출력 컬렉션에 있는 해당 열과 동일한 계보 ID를 갖는 새 입력 열을 해당 구성 요소의 입력 열 컬렉션에 만듭니다.

가상 입력 개체의 SetUsageType 메서드를 직접 호출하면 적절하지 않은 데이터 형식 및 다른 속성을 기반으로 하는 열을 거부하는 구성 요소 기능을 사용할 수 없으므로 이 메서드를 직접 호출하여 열을 선택하면 안 됩니다.

다음 코드 예제에서는 구성 요소의 디자인 타임 인스턴스를 사용하여 구성 요소의 열을 선택하는 방법을 보여 줍니다.

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

namespace Microsoft.SqlServer.Dts.Samples
{
  class Program
  {
    static void Main(string[] args)
    {
      // Create a package and add a Data Flow task.
      Package package = new Package();
      Executable e = package.Executables.Add("STOCK:PipelineTask");
      TaskHost thMainPipe = e as TaskHost;
      MainPipe dataFlowTask = thMainPipe.InnerObject as MainPipe;

      // Add an OLE DB connection manager to the package.
      ConnectionManager conMgr = package.Connections.Add("OLEDB");
      conMgr.ConnectionString = "Provider=SQLOLEDB.1;" +
        "Data Source=<servername>;Initial Catalog=AdventureWorks;" +
        "Integrated Security=SSPI;";
      conMgr.Name = "SSIS Connection Manager for OLE DB";
      conMgr.Description = "OLE DB connection to the AdventureWorks database.";

      // Create and configure an OLE DB source component.  
      IDTSComponentMetaData100 source =
        dataFlowTask.ComponentMetaDataCollection.New();
      source.ComponentClassID = "DTSAdapter.OleDbSource";
      // Create the design-time instance of the source.
      CManagedComponentWrapper srcDesignTime = source.Instantiate();
      // The ProvideComponentProperties method creates a default output.
      srcDesignTime.ProvideComponentProperties();
      // Assign the connection manager.
      source.RuntimeConnectionCollection[0].ConnectionManager =
        DtsConvert.GetExtendedInterface(conMgr);
      // Set the custom properties of the source.
      srcDesignTime.SetComponentProperty("AccessMode", 2);
      srcDesignTime.SetComponentProperty("SqlCommand",
        "Select * from Production.Product");

      // Connect to the data source,
      //  and then update the metadata for the source.
      srcDesignTime.AcquireConnections(null);
      srcDesignTime.ReinitializeMetaData();
      srcDesignTime.ReleaseConnections();

      // Create and configure an OLE DB destination.
      IDTSComponentMetaData100 destination =
        dataFlowTask.ComponentMetaDataCollection.New();
      destination.ComponentClassID = "DTSAdapter.OleDbDestination";
      // Create the design-time instance of the destination.
      CManagedComponentWrapper destDesignTime = destination.Instantiate();
      // The ProvideComponentProperties method creates a default input.
      destDesignTime.ProvideComponentProperties();

      // Create the path from source to destination.
      IDTSPath100 path = dataFlowTask.PathCollection.New();
      path.AttachPathAndPropagateNotifications(source.OutputCollection[0],
        destination.InputCollection[0]);

      // Get the destination's default input and virtual input.
      IDTSInput100 input = destination.InputCollection[0];
      IDTSVirtualInput100 vInput = input.GetVirtualInput();

      // Iterate through the virtual input column collection.
      foreach (IDTSVirtualInputColumn100 vColumn in vInput.VirtualInputColumnCollection)
      {
        // Call the SetUsageType method of the destination
        //  to add each available virtual input column as an input column.
        destDesignTime.SetUsageType(
           input.ID, vInput, vColumn.LineageID, DTSUsageType.UT_READONLY);
      }

      // Verify that the columns have been added to the input.
      foreach (IDTSInputColumn100 inputColumn in destination.InputCollection[0].InputColumnCollection)
        Console.WriteLine(inputColumn.Name);
      Console.Read();

      // Add other components to the data flow and connect them.
    }
  }
}
Integration Services 아이콘(작은 아이콘) Integration Services 관련 최신 정보 얻기

Microsoft의 최신 다운로드, 아티클, 예제 및 비디오와 커뮤니티의 정선된 솔루션을 보려면 MSDN의 Integration Services 페이지를 방문하십시오.


이러한 업데이트에 대한 자동 알림을 받으려면 해당 페이지에서 제공하는 RSS 피드를 구독하십시오.

커뮤니티 추가 항목

추가
표시: