一直以來,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