[SSIS]參考C#組件

一直以來,SSIS2008/2012就少了SFTP/FTPS Component,為了實作加密管道的FTP傳送,可能就需要參考C#組件,來筆記參考C#的做法。

 

當然除了參考C#組件外,也可以考慮使用SFTP Task (SSIS Control Flow Custom Component),需要注意的License type是Ms-RL,這邊先筆記參考C#組件的作法。

 

1.首先我們先新增一個類別庫,假設取名為BatchLink。

2.新增一個類別程式GetC.cs 作為輸入object的比較。

namespace BatchLink
{
    public class GetC
    {
        public bool Compare<T>(T A, T B)
        {
            return A.Equals(B);
        }

    }
}

3.專案屬性-應用程式:設定組件編譯的版本,因為要佈署到SSIS2008,因此只能.NET Framework 3.5)

4.專案屬性-簽署(因為要安裝到GAC,請選擇sign a Assembly with a strong name

5.編譯,並將編譯後的BatchLink.dll複製到SSIS2008機器上,並用Gacutil安裝在GAC中。

另外也複製一份dll到以下目錄中

6.開啟SSIS2008 BI開發工具(VS2008)新增一個指令碼工作(Script Task)(步驟可以參考之前這篇)

7.點選指令碼工作兩下,跳出指令碼編輯器,點選編輯指令碼。(Entry point是程式的進入點,預設是Main)

8.跳出Visual Studio 2008開發工具後,加入參考,然後新增一小段測試程式碼,然後關閉編輯視窗。

public void Main()
{
      // TODO: Add your code here
      BatchLink.GetC c = new BatchLink.GetC();
      MessageBox.Show(string.Format("{0}{1} are Equal:{2}","A","B",Console.Equals("A","B")));
      MessageBox.Show(string.Format("{0}{1} are Equal:{2}", 1, 2, Console.Equals(1, 2)));
      MessageBox.Show(string.Format("{0}{1} are Equal:{2}", 1, 1, Console.Equals(1, 1)));

      Dts.TaskResult = (int)ScriptResults.Success;
}

9.分別[AB][12][11]的值是否相同測試:

完成了SSIS呼叫C#的工作,其實因為SSIS本身提供了許多控制元件功能,倒是有很有機會會用C# call SSIS Package,這次的方向比較特殊。

 

參考:

SFTP Task (SSIS Control Flow Custom Component)

Referencing a custom assembly inside a Script Task