Простой способ запустить процедуру в фоновом режиме - PullRequest
2 голосов
/ 28 сентября 2011

Я запускаю хранимую процедуру из интерфейса asp.net, но она довольно длинная.Как легко запустить эту вещь в фоновом режиме?Я имею в виду, если я закрою браузер, я все еще хочу, чтобы моя хранимая процедура завершилась, а не просто умерла.Кроме того, я хотел бы выполнить другие действия во внешнем интерфейсе во время выполнения моей процедуры.Любое хорошее решение для этого?

Ответы [ 3 ]

2 голосов
/ 28 сентября 2011

Это может сделать как агент SQL, так и компонент Service Broker, хотя для этого требуется определенная работа с вашей стороны.

1 голос
/ 28 сентября 2011

Просто запустите его в другой ветке так:

'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
0 голосов
/ 28 сентября 2011

Используйте «Asynchronous Processing = true» в строке подключения и вызывайте sproc асинхронно, как в этой ссылке.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...