如果我从C#运行WAITFOR并且.NET应用程序崩溃会发生什么?

时间:2017-06-21 16:47:07

标签: c# sql-server

我有一个C#应用程序,它使用Entity Framework在一个批处理中按顺序执行SQL Server命令。像这样:

Database.ExecuteSqlCommand("Insert into tbl1...;
WAITFOR delay '00:00:02.000';
Delete from tbl1 where...");

其中一个命令是WAITFOR,它要求DB在继续下一个语句之前等待大约2秒钟。

如果应用程序在WAITFOR运行时崩溃会发生什么? SQL Server是否仍会等待定义的时间然后执行命令,还是会在中间停止?

谢谢!

1 个答案:

答案 0 :(得分:0)

要回答您的问题,我相信客户端会将整个批次发送到服务器,如果客户端崩溃,服务器仍将执行命令,直到发出特定的kill命令。

一种方法是将代码放入存储过程并简单地调用该过程。这样,只要调用它,所有代码都将执行。

如果您的目的是删除记录,即使客户端崩溃,那么您可以按照建议尝试SQL代理作业方法。通过这种方式,您的客户端不会等到删除完成(除非这是您想要的)为此,您必须在表中插入记录日期时间,以便您可以每两分钟扫描一次表并删除基于行的表记录插入日期时间。

如果您想要更复杂但更可靠的解决方案,您可以使用服务代理,您可以在其中对要删除的记录进行排队,并且单独的进程可以将其删除。对于这个简单的任务,服务代理可能太多了。但这取决于你想要删除的稳定程度。