我正在从asp.net前端运行存储过程,但它很长。在后台运行该东西的简单方法是什么?我的意思是如果我关闭浏览器,我仍然希望我的存储过程完成而不仅仅是死亡。此外,我想在我的程序运行时在前端执行其他操作。对此有什么好的解决方案吗?
答案 0 :(得分:2)
SQL代理和Service Broker都可以执行此操作,但它确实需要您完成一些工作。
答案 1 :(得分:1)
只需在另一个线程中启动它:
'Starts execution of the proc
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim t As New Threading.Thread(AddressOf DoWork)
t.Start()
End Sub
Private Sub DoWork()
Using c As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
c.Open()
Dim command = New SqlCommand("LongTest", c)
command.CommandType=Data.CommandType.StoredProcedure
command.CommandTimeout = 0
command.ExecuteNonQuery()
End Using
End Sub
这是我用于测试的sp:
create PROCEDURE dbo.LongTest
AS
BEGIN
WaitFor Delay '00:00:30' --wait for 30 seconds before doing anything
insert into TableImageTest(image)
values(null)
END
答案 2 :(得分:0)
在连接字符串中使用“Asynchronous Processing = true”,并像在此链接中一样异步调用sproc。