SqlCommand.CommandTimeout和SqlConnection.ConnectionTimeout有什么区别?

Dha*_*ana 81 .net sqlcommand sqlconnection

.NET SqlCommand.CommandTimeoutSqlConnection.ConnectionTimeout.NET 之间有什么区别吗?

Jon*_*eet 118

是.CommandTimeout是一个命令可以完成多长时间.ConnectionTimeout是建立与服务器的连接可以花多长时间.

例如,您可能正在执行相对长时间运行的查询 - 完全可以让他们花10分钟完成,但如果花费10分钟来建立连接,您就会知道出现了严重错误.

  • flipdoubt - CommandTimeout会影响查询,ConnectionTimout不会.ConnectionTimout不是连接到执行查询的超时 - 它只是连接首先连接到数据库的超时. (27认同)
  • 请记住,CommandTimeout似乎仅适用于从SQL Server返回到客户端代码的第一行.例如,如果您的查询在30秒内返回第一行,但完整的行集需要数小时才能返回,则将超时设置为30秒不会使查询超时,查询将运行数小时.如果您的执行计划的LHS上没有阻塞运算符(例如Order by),则主要是这种情况.(发布是因为我花了2天的时间调试这个并没有关于这个主题的其他参考) (6认同)
  • 为了争论,让我说我有一个!**&#Q @?查询需要32秒才能运行.如果我设置SqlCommand.CommandTimeout = 40但是将SqlConnection.ConnectionTimeout保留为默认值(大概是30),连接会超时吗?换句话说,我是否必须设置这两个属性?这听起来像是在说"不",但我一定忘记了SqlConnection.ConnectionTimeout属性,并开始质疑设置CommandTimeout是否能完成我需要的所有内容. (5认同)
  • 你什么意思?要么你正在设置CommandTimeout,要么你不是...... (2认同)

Nin*_*nse 27

SqlCommand.CommandTimeout = SQL查询的超时限制.意味着一个(例如:SELECT,UPDATE)查询可以花多少时间执行它.如果它超过SqlCommand.CommandTimeout,则它会停止执行.将发生命令超时错误.

SqlConnection.ConnectionTimeout =连接的超时限制.意味着您的连接对象可以尝试连接多长时间.如果超过指定时间,则停止连接.将发生连接超时错误.


Cer*_*rus 11

ConnectionTimeout指定时间试图在超时前等待打开SqlConnection.它与Connection.Open()命令有关.

SqlCommand.CommandTimeout指定SqlCommand在超时之前等待的持续时间.在打开连接并且已ExecuteXXX在Command对象上调用其中一个方法之后,会发生这种情况.


小智 8

附加信息

默认值为CommandTimeout30秒.零(0)表示没有限制.您只能CommandTimeout在Coding中设置值.

默认值为ConnectiontTimeout15秒.零(0)表示没有限制.将获得小于零的值(减去值)ArgumentException.您可以ConnectionTimeout在Coding和Config文件中设置值.