CommandTimeout属性是否会覆盖SQL语句

时间:2015-10-20 08:16:59

标签: c# sql-server tsql command-timeout

如果我使用下面的c#代码从DB中检索存储过程

 _command = database.GetStoredProcCommand("ReadQueue");
 _command.CommandTimeout = 0; 
DB中的

ReadQueue程序:

BEGIN
    EXEC('WAITFOR (RECEIVE * FROM MSGQUEUE), TIMEOUT 120000 ;')
END

当我从代码0或120执行命令时超时是什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

两者都没有。

如果您使用命令超时= 100秒,它将在100秒后超时,并且不要介意“WAITFOR”。

在您的示例中,命令超时是“无限期”,因此“WAITFOR”会启动 我在这里假设SQL 2102 BTW。

https://msdn.microsoft.com/en-us/library/ms187331.aspx

“TIMEOUT”仅适用于Service Broker,因此在接收https://msdn.microsoft.com/en-us/library/ms186963(v=sql.110).aspx下,我们会看到:

“如果超时到期,RECEIVE将返回一个空结果集。”

所以在120秒之后,你将继续执行一个空的结果集(没有错误发生),并且在该点之后你拥有的任何东西都会继续正常执行。