我有一个长时间运行的SP(它可以运行长达几分钟),它基本上对事务中的各个表执行了许多清理操作。我正在尝试确定以某种方式将人类可读状态信息传递给调用者的最佳方式,即SP正在执行的流程的哪一步。
因为整个SP在单个事务中运行,所以我无法将此信息写回状态表,然后从另一个线程读取它,除非我使用NOLOCK读取它,我认为这是最后的手段:
有没有办法在事务中发出单个命令(或EXEC第二个SP)并告诉指定该特定命令不应该是事务的一部分?或者是否有其他方法让ADO.NET深入了解这个长期运行的SP以了解它目前正在做什么?
答案 0 :(得分:3)
答案 1 :(得分:3)
您可以在T-SQL中打印消息,并通过“InfoMessage”事件将它们传递到ADO.NET中的SqlConnection。参见
http://msdn.microsoft.com/en-us/library/a0hee08w.aspx
了解详情。