日期:2014-05-20  浏览次数:20519 次

数据库插入超时,比较紧急向大家求教了
现在有个很着急的事向大家求教了。
我的数据库通过程序(asp.net)插入数据,报出了超时时间已到的错误。但是在数据库的查询分析器里插入成功了.数据倒是不多有1万多条,但是有6个多GB。数据里带有2进制的图片。我用事件探查器查了程序插入的时候,语句执行了但是Duration是30530,然后没成功就回滚了(事务写在程序里),查询分析器插入是3000多,成功插入了。向各位高人求教了。因为到了年底所以事情就更着急了。
我总共使用了2种方法进行插入
1.使用mapping映射了数据表,然后使用dataadapter进行了更新。
sqlConn.Open()   ;
//创建事务
sqltrans =   sqlConn.BeginTransaction()   ;
sqlComm =   GetInsertCommand()   ;  
sqlComm   =   new   SqlCommand( "usp_T_DATAInsert ");  
sqlComm.CommandType   =   CommandType.StoredProcedure;  
SqlParameterCollection   sqlParams   =   sqlComm.Parameters   ;
sqlComm.Transaction   =   sqltrans   ;
sqlComm.Connection =   sqlConn   ;
sqlDa.InsertCommand   =   sqlComm   ;
sqlDa.Update(commenData,   CommenData.T_DATA_TABLE);  
2.我用了sqlcommand的ExecuteNonQuery的方法插入
2种方法在有及偶尔的情况下单条的插入,但是大多时间都有问题了,多条插入肯定是不行的。不过以前第一种方法一直能多条插入。

报错信息为:System.Data.SqlClient.SqlException:超时时间已到。在操作完成之前超时时间已过或服务器未响应。
at   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior   cmdBehavior,   RunBehavior   runBehavior,Boolean   returnStream)
at   System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at   Operation.DataAccess.InsertT_DATA(CommenData   commenData)in   DataSccess.cs:line   717

------解决方案--------------------
Conntection连接是有一定时间的,你可以把那TimeOut改长一点
------解决方案--------------------
timeout是在open之前用的
------解决方案--------------------
这么多的数据量插入首先要把连接超时时间调长.然后再考虑能不能将数组分类,在保证数据安全的前提用多线程多连接来做.
------解决方案--------------------
Server.TimeOut=9999999;
------解决方案--------------------
调下timeout试试