用昨天写的那代码去增加有个小小的问题,就是容易在插入的过程中超时,这样的话数据将回滚回去,数据量一大,情况很普遍,通过实验插入4W以下的数据还是没问题的,可以顺利通过,但是4W到7W的时候就回出现插入超时的SqlException异常,7W以上基本上是一次不可能成功,于是开始研究SqlBulkCopy类,发现里面有个BatchSize属性,他的意思好象是设置到多少条数据了就开始提交一次,SqlBulkCopy是支持多次复制的,所以我把BatchSize设置为10000基本上是可以解决复制超时的问题.于是制作安装程序,开始移交测试,哎,终于好了,异常不会出现,基本上10W数据在30秒内可以完成,基本上可以满足需要.但是又有一个新的问题出现,制作安装程序的时候WebService没有项目输出,只有内容输出,这样的话做成的安装程序也可以说基本上是一个废的.那样程序的源码全暴露了,于是百度加Google好象一直没找到类似的问题,没办法,只有用最笨也是最不想用的办法了,给WebService先发布一下,然后把发布好的文件一个一个input哎,就这样,没办法,好象vs2005中文的有个小问题,可能是版本的问题吧,打开2008建的webService都是app,好象2005给他当成webpage了.下班了,找房去了!把代码贴下.

DataTable OraTable = DbHelperOra.Query(SQL_SELECT_ACCOUNT_BY_ALL_ORACLE).Tables[0];
                
using (System.Data.SqlClient.SqlBulkCopy sqlbulk = new SqlBulkCopy(System.Configuration.ConfigurationManager.AppSettings["ConnectionStringSql"]))
                
{
                    sqlbulk.DestinationTableName 
= "ACCOUNT";
                    sqlbulk.ColumnMappings.Add(
0"ACCOUNT");
                    sqlbulk.ColumnMappings.Add(
1"SNO");
                    sqlbulk.ColumnMappings.Add(
2"QUERYPIN");
                    DbHelperSQL.ExecuteSql(SQL_TRUNCATE_ACCOUNT);
                    sqlbulk.BatchSize 
= 10000;
                    sqlbulk.BulkCopyTimeout 
= 40;
                    sqlbulk.WriteToServer(OraTable);
                    sqlbulk.Close();
                }