[SQL SERVER][SSIS]利用 C# 執行 SSIS並傳遞變數
今天使用者有個需求,使用者希望可以透過自動排成程式呼叫 SSIS ,
而 SSIS 的工作就是將某個資料表匯出為 Excel,
整個過程不難,自己記錄備忘一下。
SSIS Data Flow
新增變數
編輯OLE DB 來源
?=參數0
設定參數和變數對應
接下來就是使用C#執行 SSIS 部分
加入以下參考
Microsoft.SQLServer.ManagedDTS(C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies)
System.configuration
應用程式組態檔
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();
}
}
}
結果
Excel內容
參考