在后台运行程序的简便方法

时间:2011-09-27 22:43:29

标签: asp.net sql sql-server vb.net sql-server-2008-r2

我正在从asp.net前端运行存储过程,但它很长。在后台运行该东西的简单方法是什么?我的意思是如果我关闭浏览器,我仍然希望我的存储过程完成而不仅仅是死亡。此外,我想在我的程序运行时在前端执行其他操作。对此有什么好的解决方案吗?

3 个答案:

答案 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。

http://geekswithblogs.net/frankw/archive/2008/07/05/execute-transact-sql-statement-asynchronously.aspx