Estou tentando receber as notificações de um trabalho do meu e-mail e colocá-las em um cliente de bate-papo (HipChat). Até agora, meu googling não foi tão bem-sucedido, então vou fazer a pergunta à comunidade: Existe uma maneira de enviar notificações do SQL Server para uma API?
Meu primeiro pensamento é que preciso adicionar uma etapa de trabalho adicional que seria uma rotina do PowerShell para executar a chamada da API.
Portanto, você precisa do SQL Server para fazer uma chamada HTTP. Não há nada no T-SQL para fazer isso diretamente. Você precisará ativar uma das incorporações de programação de propósito geral que ele suporta.
Sua própria sugestão de chamar o PowerShell de uma nova etapa de trabalho funcionará. Se houver parâmetros para passar da etapa de trabalho que faz o trabalho para aquela que faz a chamada HTTP, isso se torna um pouco estranho, mas existem maneiras de alcançá -lo.
Como os procedimentos armazenados do SQL Server 2005 podem ser escritos em qualquer linguagem .Net . O código pode implementar qualquer coisa que qualquer outro programa .Net possa, incluindo chamadas HTTP. Há algumas coisas para se ter cuidado, no entanto. É possível escrever código que pode travar o próprio SQL Server. Uma solicitação HTTP pode levar muito tempo para ser concluída. Se executado de forma síncrona, isso manterá aberta a transação atual e quaisquer bloqueios ativos. Isso pode afetar gravemente a simultaneidade. Pode ser melhor usar o SQL CLR para gravar em uma fila que chama a API de forma assíncrona.
Mais recentemente, foi adicionado suporte para código escrito em Python, R e Java. Qualquer um deles deve ser capaz de fazer solicitações HTTP.
Para os realmente corajosos, os objetos COM podem ser instanciados diretamente do T-SQL usando os procedimentos sp_OA* . Aqui está uma implementação . Tem toda a facilidade de montagem aliada à clareza do linear B. Já usei isso uma vez na carreira. Isso foi o suficiente.
Para meus dois centavos - se o caso de uso for um simples "este trabalho terminou", eu usaria a combinação de etapa de trabalho / PowerShell.