.net 即使客户端进程被终止,也要执行长时间运行的SQL查询

.net 即使客户端进程被终止,也要执行长时间运行的SQL查询,.net,sql-server,.net,Sql Server,我在应用程序中调用一个存储过程,删除数据库中的记录需要很长时间。我意识到,如果在执行过程中终止应用程序进程,记录的删除就会停止 我尝试了SqlCommand.ExecuteNonQuery和SqlCommand.BeginExecuteNonQuery,但两者效果相同 有没有一种方法可以启动一个sql查询,不管客户端发生什么情况,它都会执行到底 更新: 在这种情况下,我希望进程异步运行,最好是参数化。您可以将过程添加到SQL Server作业中,并执行SQL Server作业而不是过程 USE

我在应用程序中调用一个存储过程,删除数据库中的记录需要很长时间。我意识到,如果在执行过程中终止应用程序进程,记录的删除就会停止

我尝试了
SqlCommand.ExecuteNonQuery
SqlCommand.BeginExecuteNonQuery
,但两者效果相同

有没有一种方法可以启动一个sql查询,不管客户端发生什么情况,它都会执行到底

更新:
在这种情况下,我希望进程异步运行,最好是参数化。

您可以将过程添加到SQL Server作业中,并执行SQL Server作业而不是过程

USE msdb ;
GO

EXEC dbo.sp_start_job N'Weekly Sales Data Backup' ;
GO

您可以将过程添加到SQL Server作业中,并执行SQL Server作业而不是过程

USE msdb ;
GO

EXEC dbo.sp_start_job N'Weekly Sales Data Backup' ;
GO

为什么要花很长时间?你正在删除数百万条记录吗?还是要删除一个大表中的记录?连接终止后,无法继续执行查询。因此没有“触发并忘记”?没有,除非执行作业,否则没有。为什么需要很长时间?你正在删除数百万条记录吗?还是要删除一个大表中的记录?在连接终止后,无法继续执行查询。因此,不存在“触发并忘记”问题?不,除非您执行作业,否则不会存在。您如何在不了解问题细节的情况下回答问题?如果在数据输入过程中发生删除,他将无法使用sql-job。为什么您认为存在问题?他只是想开始一件不会在连接中断时被杀死的事情。当然,您可以在其他人导入数据时启动sql作业。这就是为什么我们有一个锁定机制。好的,并发可能会出现问题。。。但现在这不是重点。我在评论中提到了原因。OP说他有一个应用程序,在他的应用程序中,他调用一个过程来删除记录,我假设在删除记录之后,他的代码正在做其他事情,所以这不能是异步的。他的应用程序必须等待记录被删除,然后继续执行应用程序代码。他不清楚情况,任何答案都可能是对的/错的/误导性的或令人困惑的。我只是认为OP不希望出现超时或网络问题,这会中断他的连接并导致回滚。我真的不知道为什么在这种情况下开始工作是错误的。也许sql代理需要启动它会更好,但我仍然看不出有任何问题。在不了解问题细节的情况下,您如何回答这个问题?如果在数据输入过程中发生删除,他将无法使用sql-job。为什么您认为存在问题?他只是想开始一件不会在连接中断时被杀死的事情。当然,您可以在其他人导入数据时启动sql作业。这就是为什么我们有一个锁定机制。好的,并发可能会出现问题。。。但现在这不是重点。我在评论中提到了原因。OP说他有一个应用程序,在他的应用程序中,他调用一个过程来删除记录,我假设在删除记录之后,他的代码正在做其他事情,所以这不能是异步的。他的应用程序必须等待记录被删除,然后继续执行应用程序代码。他不清楚情况,任何答案都可能是对的/错的/误导性的或令人困惑的。我只是认为OP不希望出现超时或网络问题,这会中断他的连接并导致回滚。我真的不知道为什么在这种情况下开始工作是错误的。也许sql代理需要启动它会更好,但我仍然看不出有任何问题