摘要:SSIS - 使用 C# 呼叫 SSIS Package 的三種方式
這陣子忽然間想來讀讀 SSIS 這門技術,在 SQL 2005 時我來不及參與,只好在 SQL 2008 的時候進門學習,當然少不了要買本胡百敬老師的書來加快入門的速度。在書中的第二章就用SSIS產生一個文字檔,但心急的我就開始想,在 C# 中應該怎麼去呼叫使用呢!? 以下就來用範列來做說明
環境:
1.SQL SERVER 2008
2.SSIS
3.資料庫:AdventureWorks
4.完成使用 SSIS 將資料表資料匯出文字檔的Package
5.建立一個 WinForm 的專案
情境一:使用 LoadPackage 來呼叫 Package
Code:
private void btnExec_Click(object sender, EventArgs e)
{
Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
Package package = null;
try
{
//指定絕對路徑給 LoadPackage
package = app.LoadPackage(@"D:\My Project\Pro_SSIS_Sample_1\Pro_SSIS_Sample_1\Package.dtsx", null);
Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute();
MessageBox.Show("執行 SSIS 狀態:" + results.ToString());
}
catch (Exception ex)
{
throw ex;
}
finally
{
package.Dispose();
package = null;
}
}
情境二:使用 LoadFromDtsServer 來呼叫 Package
步驟一:開啟 SSIS 後,選擇「存放的封裝\File System」,並且新增一個名為「MySSIS」的資料夾
步驟二:匯入 dtsx
步驟三:撰寫程式碼
Code:
private void btnExec_Click(object sender, EventArgs e)
{
Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
Package package = null;
try
{
package = app.LoadFromDtsServer("File System\\MySSIS\\MySSIS_01", "HP-PC", null);
Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute();
MessageBox.Show("執行 SSIS 狀態:" + results.ToString());
}
catch (Exception ex)
{
throw ex;
}
finally
{
package.Dispose();
package = null;
}
}
情境三:使用 LoadFromSqlServer 來呼叫 Package
步驟一:開啟 SSIS 後,選擇「存放的封裝\MSDB」,並且對「Data Collector」按右鍵選「匯入封裝」
步驟二:撰寫程式碼
Code:
private void btnExec_Click(object sender, EventArgs e)
{
Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
Package package = null;
try
{
package = app.LoadFromSqlServer(@"\Data Collector\MySSIS_01", "HP-PC\\DANNYDB", "sa", "pass@word1", null);
Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute();
MessageBox.Show("執行 SSIS 狀態:" + results.ToString());
}
catch (Exception ex)
{
throw ex;
}
finally
{
package.Dispose();
package = null;
}
}
參考:
c#執行SSIS包的方法2
Avviare un package di SSIS da un'applicazione ASP.NET
DbConnectionStringBuilder Class