Chamadas de procedimento armazenado assíncronas
-
09-06-2019 - |
Pergunta
É possível chamar um procedimento armazenado de outro procedimento armazenado de forma assíncrona?
Editar: Especificamente, estou trabalhando com um banco de dados DB2.
Solução
Sumário executivo:Sim, se o seu banco de dados tiver um serviço de fila de mensagens.
Você pode enviar uma mensagem para uma fila e o processador da fila a consumirá de forma assíncrona.
- Oráculo:filas
- Servidor SQL:corretor de serviços
- DB2:corretor de eventos
Para linguagens de procedimento armazenado "puras" (PL/Sql ou T-Sql), a resposta é não, pois funciona contra o modelo de transação fundamental que a maioria dos bancos de dados possui.
No entanto, se o seu banco de dados tiver um mecanismo de enfileiramento, você poderá usá-lo para obter o mesmo resultado.
Outras dicas
Com o MS Sql Server 2005, experimente o Service Broker e/ou procedimentos armazenados CLR.Não acho que haja algo incorporado diretamente no TSQL.
Parece que você precisa implementar alguns trabalhos agendados com o Cron (ou Windows Equiv).Você pode usar a chamada proc armazenada inicial para definir algum tipo de sinalizador no banco de dados, que é verificado periodicamente por um cron job.Se você precisar de um atraso específico antes da execução do segundo trabalho, poderá fazer isso agendando a tarefa pelo cron job.