数据库插入超时,比较紧急向大家求教了
现在有个很着急的事向大家求教了。
我的数据库通过程序(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试试