我的TableAdapter
是在 ADO.NET 数据集中定义的。我的存储过程在 SSMS 中执行 50 秒。当我尝试在应用程序中执行它时,我超时。
如何设置TableAdapter
的超时连接值?
我们可以在两个地方设置超时。
SqlConnection
SqlCommand
SqlConnection
拥有ConnectionTimeout
财产。它指定 ADO.Net 尝试连接到服务器时等待的时间。如果未与服务器建立连接(网络关闭/服务器未运行等),则会引发异常。
SqlCommand
拥有CommandTimeout
财产。它指定执行命令后返回结果的等待时间(您调用Execute
/ExecuteNoQuery
等)。如果在指定时间内未返回任何结果,则会引发异常。默认情况下,命令超时为 30 秒。因此,如果命令需要 50 秒,您将收到异常。
对于SqlConnection
和SqlCommand
,这很简单,只需在对象上设置属性的值即可。
对于TableAdapter
,您有两种方法可以设置ConnectionTimeout
(两者都会导致相同的输出)。首先是在连接字符串中进行设置。其次是在设置适配器连接时在Advanced
属性对话框中设置它。
对于CommandTimeout
,您需要从超时的适配器访问特定命令。如果 select 命令正在爆炸,您可以使用以下命令:
var ta = new YouTableAdapter();
ta.Adapter.SelectCommand.CommandTimeout = 100;
您需要更改连接字符串上的超时,而不是表适配器上的超时:
SQL 服务器的连接超时
祝你好运。