Мой инстинкт сказал, что процедура все еще будет выполняться, поэтому я собрал простой тест.
SQL:
Create Procedure TestDelay
AS
waitfor delay '00:00:40'
update table_1
set dt = getdate()
И в VB.Net (так же, как C # для этой цели):
Dim con As New SqlConnection(myconnectionstring)
Dim com As New SqlCommand("TestDelay", con)
com.CommandType = CommandType.StoredProcedure
con.Open()
Try
com.ExecuteNonQuery()
Catch ex As Exception
con.Close()
Response.Write(ex.Message)
End Try
Результат? Процедура не завершилась после тайм-аута. Я проверил, что происходило во время трассировки в профилировщике SQL, и убедился, что достаточно SQL, чтобы обернуть вызов в транзакции, и должен откатить эту транзакцию по тайм-ауту.
Примечание. Этот тест был запущен для SQL 2005, но я подозреваю, что результаты будут аналогичными в других версиях.