none
SSIS中 数据流中,插入更新数据到DB2 RRS feed

  • 常规讨论

  • 我使用OLE DB 目标 组件,当有时间字段,老给报 TIME OUT OF A range 等字祥错误,我试着把日期转换成很多格式类型,都出现错误,

    当使用old db 命令 时,有时更新 它会也报 多步错误, 整死我了,最后我打算用脚本来组件,使用目标.

    客户一听,说不行,如果测通的连路了,也不行,得重做。真愁人。 这该死的DB2,为什么不让用脚本组件,客户一听,就反对,这是为什么呢?

    大家对DB2有什么好招不。注意OLEDB参数要用?

    下面贴出我的DB2脚本更新代码

     

    using System;
    using System.Data;
    using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
    using Microsoft.SqlServer.Dts.Runtime.Wrapper;
    using System.Data.OleDb;

    [Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
    public class ScriptMain : UserComponent
    {

        OleDbConnection con;
        OleDbCommand old;
        OleDbParameter one, two, name, date;
        public override void PreExecute()
        {

            //连接数据字符串
          /*
            Data Source=issuser-PC;User ID=db2admin;Password=110;
           * Initial Catalog=SAMPLE;Connect Timeout=60000;
           * Provider=DB2OLEDB;Host CCSID=1208;PC Code Page=1381;
           * Network Address=issuser-PC;Network Port=50000;
           * Package Collection=ISSUSER;Default Schema=ISSUSER;Process Binary as Character=True;
           * */


            con = new OleDbConnection(Variables.SQL.ToString());   //我把数据连接的字符放到SQL变量中去了
            con.Open();
            old = new OleDbCommand();

            old.Connection = con;
            old.CommandText = "INSERT INTO  ISSUSER.TEST(NUM1,RQ,NUM2 ,NAME) values(?,?,?,?)";

            one = new OleDbParameter("@NUM1", OleDbType.Integer);
            old.Parameters.Add(one);

            date = new OleDbParameter("@RQ", OleDbType.DBTimeStamp);
            old.Parameters.Add(date);

            two = new OleDbParameter("@NUM2", OleDbType.Integer);
            old.Parameters.Add(two);
            name = new OleDbParameter("@NAME", OleDbType.VarChar);
            old.Parameters.Add(name);

        }

        public override void PostExecute()
        {
           // base.PostExecute();
            /*
              Add your code here for postprocessing or remove if not needed
              You can set read/write variables here, for example:
              Variables.MyIntVar = 100
            */

           con.Close();
        }

        public override void 输入0_ProcessInputRow(输入0Buffer Row)
        {

         
          
            old.Parameters["@NUM1"].Value = Row.one;
            old.Parameters["@RQ"].Value = Row.rq;
            old.Parameters["@NUM2"].Value = Row.two;
           old.Parameters["@NAME"].Value = Row.name;
            old.ExecuteNonQuery();
              
            /*
              Add your code here
            */
        }

    }

     

     

    2011年3月3日 17:36

全部回复

  • Did you compare differece in time column format between db2 and data sourece? Possible to reformat it at source? 
    2011年3月3日 18:22
  • 最后的解决方案,是一人联想的人解决了,它使用 Microsoft OLE DB Provider for DB2 最新版本。 我到,问题,竟然是这样的
    2011年3月9日 14:51