【发布时间】:2017-05-22 22:59:05
【问题描述】:
我的TableAdapter 是在 ADO.NET 数据集中定义的。我的存储过程在 SSMS 中执行 50 秒。当我尝试在应用程序中执行它时,我会超时。
如何设置TableAdapter的超时连接值?
【问题讨论】:
标签: c# .net winforms timeout tableadapter
我的TableAdapter 是在 ADO.NET 数据集中定义的。我的存储过程在 SSMS 中执行 50 秒。当我尝试在应用程序中执行它时,我会超时。
如何设置TableAdapter的超时连接值?
【问题讨论】:
标签: c# .net winforms timeout tableadapter
我们可以在两个地方设置超时。
SqlConnectionSqlCommandSqlConnection 具有 ConnectionTimeout 属性。它指定 ADO.Net 在尝试连接到服务器时等待的时间。如果没有与服务器建立连接(网络关闭/服务器未运行等),则会引发异常。
SqlCommand 具有 CommandTimeout 属性。它指定执行命令后返回结果的等待时间(您调用Execute/ExecuteNoQuery 等)。如果在指定时间内没有返回结果,则抛出异常。默认情况下,命令超时时间为 30 秒。所以,如果命令需要 50 秒,你会得到一个异常。
SqlConnection 和SqlCommand 很简单,只需设置对象的属性值即可。
对于TableAdapter,您有两种设置ConnectionTimeout 的方法(都导致相同的输出)。首先是在连接字符串中设置。其次是在为适配器设置连接时在Advanced 属性对话框中设置它。
对于CommandTimeout,您需要从正在超时的适配器访问特定命令。如果选择命令被炸毁,你可以使用这个:
var ta = new YouTableAdapter();
ta.Adapter.SelectCommand.CommandTimeout = 100;
【讨论】:
Adapter.SelectCommand.CommandTimeout吗?你能检查一下Connection 给SelectCommand 的超时时间吗?这可能是任何原因,但您是否考虑过分页数据以更快地加载它?或者在服务器上设置一些索引?
TableAdapter。我添加了一个数据源并从VS 复制了这些行。所以这意味着它为您提供了不同的命令来设置属性。 注意 您不能在 TableAdapter 本身上设置 CommandTimeout。您必须选择像Select、Update 等这样的命令并设置超时。
【讨论】: