如果我使用下面的c#代码从DB中检索存储过程
_command = database.GetStoredProcCommand("ReadQueue");
_command.CommandTimeout = 0;
DB中的 ReadQueue
程序:
BEGIN
EXEC('WAITFOR (RECEIVE * FROM MSGQUEUE), TIMEOUT 120000 ;')
END
当我从代码0或120执行命令时超时是什么?
谢谢。
答案 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秒之后,你将继续执行一个空的结果集(没有错误发生),并且在该点之后你拥有的任何东西都会继续正常执行。