国产探花免费观看_亚洲丰满少妇自慰呻吟_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都要設置。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵定县| 宁德市| 彭泽县| 长宁县| 青海省| 溧阳市| 太仆寺旗| 游戏| 修文县| 亚东县| SHOW| 湘潭县| 肃南| 西乌珠穆沁旗| 凤凰县| 平南县| 景德镇市| 鹤岗市| 天等县| 高尔夫| 淮北市| 资阳市| 江源县| 宜都市| 台中市| 荔浦县| 怀化市| 广州市| 哈巴河县| 岱山县| 天峻县| 故城县| 莒南县| SHOW| 柘荣县| 大城县| 东兴市| 博乐市| 邢台市| 满洲里市| 博罗县|