Est-il possible pour une procédure stockée SQL Server de signaler la progression à l'appelant?
J'ai une tâche complexe composée de plusieurs étapes, et j'ai une procédure stockée qui le fait. J'appelle cette procédure stockée à partir d'un frontal MS Access. La procédure stockée prend environ 3-4 minutes pour se terminer, période au cours de laquelle Access semble «se bloquer», en attendant que la procédure stockée renvoie un résultat ou un timeout.
Je sais que je pourrais séparer ma procédure stockée en 3-4 petits morceaux, et les appeler l'un après l'autre, en fournissant quelques returns entre les étapes. Cela ressemble toutefois à une solution de contournement, pas à une solution.
Je déteste aussi avoir quatre procédures stockées au lieu d'une seule, parce que j'ai beaucoup de tâches comme celle-ci, et ce path transformerait mes 30 procédures stockées (déjà nombreuses) en 50+.
Donc, y a-t-il un moyen pour une procédure stockée de rapporter de time en time à l'Access appelant (DAO) avec un statut ou quoi que ce soit?
Voici comment j'appelle la procédure stockée:
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
Il semble qu'il n'y ait pas de bonne solution.
Essayez d'exécuter un SP pour faire votre travail (avec dbRunAsync
) et un autre SP pour recevoir le statut du résultat. Le premier SP doit stocker l'état d'exécution quelque part et le second SP le lira.