目标:通过单个函数调用从asp.net网页后面的代码异步调用一个非常慢的存储过程(带参数),然后忘记它。
注意:我尝试使用SqlCommand.BeginExecuteNonQuery
不调用SqlCommand.EndExecuteNonQuery
(参见下面的代码),但存储过程没有运行。(我使用了一个很小的存储过程来更新表上的单个字段以进行测试,但该字段没有更新。当我使用它时它会更新SqlCommand.ExecuteNonQuery
)。
我对存储过程何时结束不感兴趣,也不知道。(所以我等不及它完成调用SqlCommand.EndExecuteNonQuery
。)
情况: 经过一番研究,我发现 sql 作业可以用于此目的。而对于sp参数;我可以将它们存储在一个表中,然后 sp 可以读取它们。但是我不知道这是否是解决我的问题的正确方法(我是 SQL 世界的新手)。我希望您可以评论为此目的使用 sql 作业,或提出替代方案。谢谢。
代码:
using (SqlConnection connection = new SqlConnection(
@"Data Source=XXX\MSSQL2008R2;Initial Catalog=YYY;Integrated Security=True"
+ ";Asynchronous Processing=true"))
{
connection.Open();
SqlCommand cmd = new SqlCommand("spTestProcedure", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@pText", DateTime.Now.ToString()));
cmd.BeginExecuteNonQuery(); //Doesn't work.
//cmd.ExecuteNonQuery(); // This works.
}