传递大型表值参数时超时

时间:2014-05-30 08:30:35

标签: c# sql-server ado.net timeout table-valued-parameters

我使用ADO.NET调用SQL Server存储过程,我必须传递一个非常大的Table-Valued参数。我经常得到这个超时异常:

System.Data.SqlClient.SqlException (0x80131904): Timeout expired.
The timeout period elapsed prior to completion of the operation or the server is not responding. --->
System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out   at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryAsync(IAsyncResult asyncResult)

我正在调用ExecuteNonQueryAsync,根据documentation,它不受CommandTimeout的影响。

问题是:我应该增加什么超时值才能将大型TVP传递给存储过程而不会超时?

1 个答案:

答案 0 :(得分:0)

最近在这种情况下对我有帮助的解决方案是增加连接超时(不要误以为命令超时)。这使我认为,有时通过表值参数将大量数据传递到存储过程时,有时可能需要更长的时间来初始化连接(这是在高峰使用期间发生的,而不是在系统低负载时发生的) 。增加连接超时的一种简单方法是通过查询字符串。

将超时设置为120秒而不是默认的15秒的示例:

JPanel