c#直接呼叫ssis包實現Sql Server的資料匯入功能

iDotNetSpace發表於2009-12-18

呼叫ssis包實現Sql Server的資料匯入功能網上已經有很多人討論過,自己參考後也動手實現了一下,上一次筆者的專案中還用了一下這個功能。思前想後,決定還是貼一下增強記憶,高手請54.
1、直接呼叫ssis包,需要引用Microsoft.SqlServer.DTSRuntimeWrap.dll,客戶端需要安裝MS SQL Server2005的客戶端元件。
2、呼叫程式碼

程式碼
        ///


        /// /通過SSIS包 將資料匯入資料庫
        ///

        /// dtsx檔名
        /// csv檔名
        ///
        protected bool FillData2DB(string dtsxFileName, string csvFileName)
        {
            string dtsxFile = System.AppDomain.CurrentDomain.BaseDirectory + "DTSX\\" + dtsxFileName;

            Microsoft.SqlServer.Dts.Runtime.Wrapper.Application app = new Microsoft.SqlServer.Dts.Runtime.Wrapper.Application();

            //Call the dtsx file
            IDTSPackage90 package = app.LoadPackage(dtsxFile, true, null); //另外還有一種方法叫LoadFromSQLServer

            package.Connections["File"].ConnectionString = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, csvFileName);
            package.Connections["本地連線"].ConnectionString = ConfigurationSettings.AppSettings["ConnStr"];

            DTSExecResult result = package.Execute();
            //獲取包的執行資訊
            //string message = string.Empty;
            //if (result.Equals(DTSExecResult.DTSER_FAILURE))
            //{
            //    for (int i = 0; i < package.Errors.Count; i++)
            //    {
            //        message += package.Errors[i].Description;
            //    }
            //}
            //if (!string.IsNullOrEmpty(message))
            //{
            //    throw new Exception(message); //丟擲異常
            //}
            if (result.Equals(DTSExecResult.DTSER_SUCCESS))
                return true;
            else
                return false;

        }
 需要的配置節如下:

程式碼


 
   
 


 注意:方法中需要用到dtsx模板和csv檔案,csv檔案的簡單生成可以參考這一篇,而dtsx模板製作是重中之中,自己菜鳥一枚,沒有發言權,您可以參考網上資源。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-622790/,如需轉載,請註明出處,否則將追究法律責任。

相關文章