C#中操作数据库时报超时时间已到。在操作完成之前超时时间已过或服务器未响应。

今天做的一个小东西,运行是出现:超时时间已到。在操作完成之前超时时间已过或服务器未响应。
为对大批量的数据操作,在相同情况我对小批量数据操作的话不会出错,要怎么去设置呢。
报错信息见下:用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。
************** 异常文本 **************
System.Data.SqlClient.SqlException: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。
在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
在 ystem.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
在 System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
在 System.Data.SqlClient.SqlDataReader.get_MetaData()
在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
************** JIT 调试 **************
要启用实时(JIT)调试,
该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置jitDebugging 值。
编译应用程序时还必须启用调试。
例如:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
启用 JIT 调试后,任何无法处理的异常
都将被发送到在此计算机上注册的 JIT 调试器,
而不是由此对话框处理。

第1个回答  2011-05-18
如果你是用System.Data.SqlClient.SqlCommand发送命令
要改动System.Data.SqlClient.SqlCommand.CommandTimeout=秒数
比如
System.Data.SqlClient.SqlCommand.CommandTimeout=600;
第2个回答  2011-05-17
要看你的代码是怎么写的,是CS还是Web追问

是Cs的,一个很小的东西

追答

试试看看SqlBulkCopy.BulkCopyTimeout 属性

超时之前操作完成所允许的秒数。

属性值
BulkCopyTimeout 属性的整数值。
备注
如果操作超时,事务便不会提交,而且所有已复制的行都会从目标表中移除。

可以设置SqlBulkCopy.BulkCopyTimeout的值来确保不超时

追问

我用的SqlServer2005的数据库,SqlBulkCopy.BulkCopyTimeout还真没有用过,望仁兄讲解讲解。
我的程序是把数据库中的几百万按一定条件查出在用.CSV导出。我操作小批量的数据是OK的

追答

那这个可能不行,我还以为你是使用SQLServer导入呢,你只能使用DataReader来导出,不能使用DataTable的方式,如果使用,必须分批,因为你的数据可能会很多!

本回答被提问者采纳