首页 新闻 赞助 找找看

批量上传数据导致SQL连接老是超时

0
[已关闭问题]

由于系统的需求,需要做一个从EXCEL导入数据插入数据库的操作,通常是一两百条数据一次性循环插入,但是连续做几次这样的操作(从EXCEL导入)的时候就会导致连接数据库超时,结果查看时数据库管理的那个进程信息有大量的进程。

小弟不才不能解决这个问题,请教园子里的各位大哥如何在大批量插入数据又能够使那个进程信息能够及时释放。

(附图)

图1:(数据库活动监视器的进程信息)

图2:(每个进程信息都是这样的,只是插入的数据值不同)

RoseNix的主页 RoseNix | 初学一级 | 园豆:2
提问于:2009-10-25 14:03
< >
分享
其他回答(6)
0

我也遇到过,后来我直接把文件缩小了才搞定它,实在不行就写个C#程序吧,一次读10出来再做插入..

互联网粒子 | 园豆:315 (菜鸟二级) | 2009-10-25 15:34
0

insert into tb

select * from opendatasource(.....)

这样操作的吗?

清海扬波 | 园豆:825 (小虾三级) | 2009-10-25 16:39
直接循环插入的 for(xxxxx) insert 语句
支持(0) 反对(0) RoseNix | 园豆:2 (初学一级) | 2009-10-25 17:59
0

增加CommandTimeout时间,我都是设置成600

Vincent Yang | 园豆:573 (小虾三级) | 2009-10-25 16:59
0

楼主首先应该找到问题:

一:200条数据一般是不会致死的。所以是否是连接重复打开或打开没有关闭?

二、可以用BULK Insert

http://technet.microsoft.com/zh-cn/library/ms188365.aspx

邀月 | 园豆:25475 (高人七级) | 2009-10-26 08:23
0

可以一次性构建
inser into XXX (a,b,c,d)
select 'a1','b1','c1','d1' union
select 'a2','b2','c2','d2' union
……     ……
select 'aN','bN','cN','dN'
避免连接重复打开关闭

码尔代夫iimax | 园豆:3138 (老鸟四级) | 2009-10-26 12:37
0

将sql超时时间设置长一点,web.config中可以设置

Aicken(李鸣) | 园豆:480 (菜鸟二级) | 2009-10-28 11:53
0

insert into products(SKU,尺码)
select 物料号,尺码 from openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=yes;IMEX=1;DATABASE=D:\0605\推广器架物料.XLS',[Sheet1$])

这种方式基本上在n多数据时才会超时。要是再超时可以
 在Global文件里设 Server.ScriptTimeout = 600;
 在webconfig里<system.web>下 设 <httpRuntime maxRequestLength="51200" executionTimeout="600"/>

如果用的是数据源控件(如SqlDataSource),要在控件的Selecting的事件里设 e.Command.CommandTimeout = 600;

子龙之魂 | 园豆:235 (菜鸟二级) | 2009-11-03 14:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册