SQL Server存储过程向其调用者报告进度,Access(VBA DAO)通过查询

时间:2017-05-29 08:22:05

标签: sql-server ms-access stored-procedures dao progress

SQL Server存储过程是否有办法向调用者报告进度?
我有一个由多个步骤组成的复杂任务,我有一个存储过程来完成它。我从MS Access前端调用此存储过程。存储过程大约需要3-4分钟才能完成,在此期间Access似乎"挂起"等待存储过程返回结果或超时。

我知道我可以将我的存储过程分成3-4个小块,然后一个接一个地调用它们,在步骤之间提供一些反馈。然而,这感觉就像是一种解决方法,而不是解决方案。

我也讨厌有四个存储过程而不只是一个,因为我有很多这样的任务,这条路径会把我的30个存储过程(已经很多)变成50 +。

那么,存储过程是否有任何方法可以偶尔向状态或其他任何位置报告调用Access(DAO)?

以下是我调用存储过程的方法:

Dim cdb As DAO.Database, qdf As DAO.QueryDef
Set cdb = CurrentDb
Set qdf = cdb.CreateQueryDef("")
' get .Connect property from existing ODBC linked table
qdf.Connect = cdb.TableDefs("Quote").Connect
qdf.sql = "EXEC INV.ProcessMatchedQueries"
qdf.ReturnsRecords = False
qdf.ODBCTimeout = 300
qdf.Execute dbFailOnError
Set qdf = Nothing
Set cdb = Nothing

1 个答案:

答案 0 :(得分:3)

似乎没有好的解决方案。

尝试执行一个SP来执行您的工作(使用dbRunAsync),然后使用另一个SP来接收结果状态。第一个SP应该在某处存储执行状态,第二个SP将读取它。