使用客户端的系统和设置做一些限制,我想知道SQL Server是否可以触发Web请求?
我需要能够在更新sql server列后发送电子邮件。我有一个数据库邮件触发器,但客户端上的数据库服务器不允许这样做。替代方案将在准备好时触发Web请求。我会通过Web服务器上的Web服务来完成它并让它只是轮询表,但这似乎是很多浪费的周期。
有什么想法吗?
答案 0 :(得分:2)
您可以从SQL Server执行托管代码。创建一个Windows服务,让它在C#中做任何你想做的事情,以满足你的需要,SQL服务器就可以调用它。
结帐this示例程序链接
答案 1 :(得分:0)
不从SQLCLR调用Web服务,尤其是不要通过SQLCRL从触发器调用Web服务(或发送电子邮件)。使用SQLCLR进行外部http或smtp访问是一个坏主意有很多原因,但从触发器执行它是可怕的。试想一下,当Web服务以10秒的延迟响应时,您的应用程序将如何表现......
您必须从外部应用程序进行邮件交互。您应该通过队列解耦应用程序和电子邮件应用程序之间的交互。有关如何将SQL Server表用作队列,请参阅Using Tables as Queues。您可以直接从您的应用程序中排队邮件请求,或者使用既插入数据又将请求排入队列的存储过程,或者作为最后的手段,使用表上的触发器将邮件请求排入队列。您的电子邮件应用程序(单独的服务)应监视此队列并通过执行实际的电子邮件发送(或http Web请求,为此事项)为其提供服务。