[SQL SERVER][SSIS]利用 C# 執行 SSIS並傳遞變數

[SQL SERVER][SSIS]利用 C# 執行 SSIS並傳遞變數

今天使用者有個需求,使用者希望可以透過自動排成程式呼叫 SSIS ,

而 SSIS 的工作就是將某個資料表匯出為 Excel,

整個過程不難,自己記錄備忘一下。

 

SSIS Data Flow

image

 

新增變數

image

 

編輯OLE DB 來源

image

?=參數0

 

設定參數和變數對應

image

 

接下來就是使用C#執行 SSIS 部分

 

加入以下參考

Microsoft.SQLServer.ManagedDTS(C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies)

System.configuration

 

應用程式組態檔

image

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.SqlServer.Dts.Runtime;
using System.Collections.Specialized;
using System.Configuration;

namespace ExecuteSSIS
{
    class MyEventListener : DefaultEvents
    {
        public override bool OnError( DtsObject source, int errorCode, string subComponent,
          string description, string helpFile, int helpContext, string idofInterfaceWithError )
        {
            // Add application-specific diagnostics here.
            Console.WriteLine( "Error in {0}/{1} : {2}", source, subComponent, description );
            return false;
        }
    }

    class Program
    {
        static void Main( string[] args )
        {
            string pkgLocation;        
            Package pkg;
            Application app;
            DTSExecResult pkgResults;
            Variables vars; 
            //讀取組態檔
            var section = ConfigurationManager.GetSection( "appSettings" ) as NameValueCollection;
            string value = section[ "type" ];

            MyEventListener eventListener = new MyEventListener();
            pkgLocation = @"e:\Package.dtsx";
            app = new Application();
            pkg = app.LoadPackage( pkgLocation, eventListener );
            vars = pkg.Variables;
            vars[ "strtype" ].Value = value; //設定 SSIS 變數
            pkgResults = pkg.Execute( null, vars, eventListener, null, null );

            Console.WriteLine(string.Format("執行結果:{0}", pkgResults.ToString()) );
            Console.ReadKey();
        }
    }
}
結果
image
Excel內容
image

 

 

 

 

參考

以程式設計的方式在本機電腦上執行 SSIS 封裝