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