传递大的表值参数时超时

本文关键字:参数 超时 值参 | 更新日期: 2023-09-27 18:05:57

我正在使用ADO调用SQL Server存储过程。. NET,我必须传递一个非常大的表值参数。我经常遇到这个超时异常:

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,根据文档不受CommandTimeout的影响。

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

传递大的表值参数时超时

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

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

"Data Source=localhost;Integrated Security=SSPI;Connection Timeout=120;"