国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#調用SSIS包及讀取DataReader目標

2019-11-14 14:04:47
字體:
來源:轉載
供稿:網友

C#調用SSIS包需要引用兩個DLL 。(具體位置在C盤搜索,MSDN和百度提供的路徑都不太正確)

Microsoft.SQLServer.ManagedDTS.dll

Microsoft.SqlServer.Dts.DtsClient.dll   

這是MSDN上的例子 https://msdn.microsoft.com/zh-cn/library/ms136025%28v=sql.120%29.aspx

MSDN上的例子只有讀取一個DataReader的做法,并且該方法不能加事件。

下面是讀取多個DataReader的代碼

          string pkgLocation = @"Package1.dtsx"; //包路徑            DtsConnection dtsConnection;          DtsCommand dtsCommand;          IDataReader dtsDataReader = null;          Package pkg;          application app;          DataSet ds = new DataSet();          app = new Application();          pkg = app.LoadPackage(pkgLocation, null);          string dataReaderName = "DataReaderDest";          dtsConnection = new DtsConnection();          {              dtsConnection.m_pkg = pkg;//              dtsConnection.ConnectionString = string.Format(@"/FILE ""{0}""",pkgLocation); //另一種連接方式。如果用Package則可以加事件//              dtsConnection.Open();          }          dtsCommand = new DtsCommand(dtsConnection);          dtsCommand.CommandText = dataReaderName;          List<string> reader = new List<string>() {"DataReaderDest", "DataReaderDest2"}; //DataReader輸出名稱 集合                      List<IDataReader> readers = new List<IDataReader>();          foreach (var cmdtext in reader)          {              dtsCommand.CommandText = cmdtext;              dtsDataReader = dtsCommand.ExecuteReader(CommandBehavior.Default);              readers.Add(dtsDataReader);              Console.WriteLine("讀取{0}", cmdtext);          }          foreach (var dataReader in readers)          {              try              {                  DataTable dt = new DataTable();                  dt.Load(dataReader);                  Console.WriteLine("數據行{0}", dt.Rows.Count);                  ds.Tables.Add(dt);              }              catch (Exception ex)              {                  Console.WriteLine(ex.Message);              }              finally              {                  dataReader.Close();              }          }          dtsCommand.Dispose();          return ds;

上面的代碼能讀取1個以上DataReader但是讀取第一個后需要等待30秒才能讀取第二個,會在下面的代碼卡著

dtsDataReader = dtsCommand.ExecuteReader(CommandBehavior.SingleResult);

原因是包中DataReader的ReadTimeout默認為30000毫秒 設為100毫秒就好了。每一個DataReader都要設置。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 六安市| 通山县| 奉贤区| 上蔡县| 溧水县| 舒城县| 普兰店市| 武平县| 武强县| 蒙自县| 南康市| 罗平县| 民勤县| 湘乡市| 肥西县| 星座| 林芝县| 邵武市| 班戈县| 云霄县| 宜春市| 桂东县| 县级市| 长寿区| 涟源市| 瓦房店市| 芷江| 雷州市| 三河市| 彰武县| 孝义市| 龙门县| 银川市| 普宁市| 都江堰市| 奈曼旗| 札达县| 沧州市| 忻州市| 柳林县| 昭平县|