我使用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传递给存储过程而不会超时?
答案 0 :(得分:0)
最近在这种情况下对我有帮助的解决方案是增加连接超时(不要误以为命令超时)。这使我认为,有时通过表值参数将大量数据传递到存储过程时,有时可能需要更长的时间来初始化连接(这是在高峰使用期间发生的,而不是在系统低负载时发生的) 。增加连接超时的一种简单方法是通过查询字符串。
将超时设置为120秒而不是默认的15秒的示例:
JPanel