2012-09-25 73 views
1

对客户端的系统和设置做一些限制,我想知道SQL Server是否可以关闭Web请求?SQL Server关闭Web请求

我需要能够在更新sql server列后发送电子邮件。我用数据库邮件触发了一个触发器,但客户端上的数据库服务器不允许这样做。另一种方法是,准备就绪时,该数字就会触发Web请求。我会通过Web服务器上的Web服务来完成它,并让它只轮询表,但这看起来像是很多浪费的周期。

任何想法?

+0

嗨 - 这是一个问题,我已经问了很多次许多版本(自从6.5以来,我一直在使用MSSQL)......并且,上次我检查了“轮询”仍然是最好的答案:(我'但我向你保证,从SQL触发器中触发COM/ActiveX对象肯定不是*(在MSSQL2000或更低版本中):( – paulsm4

+0

)有点不好意思,我正在研究SQL CLR Web请求 – cdub

+0

我正在运行2005. – cdub

回答

2

您可以从SQL Server执行托管代码。创建一个windows服务,并让它在C#中完成任何你想要的事情,然后让SQL服务器调用它。

结帐this链接样本程序

0

从SQLCLR做调用Web服务,特别是不调用Web服务(或发送电子邮件)通过SQLCRL从触发器。为什么使用SQLCLR进行外部http或smtp访问是一个不好的主意,但从触发器中执行它有很多原因是可怕的。试想一下,如果Web服务响应时间为10秒,您的应用程序将如何运行......

您必须从外部应用程序进行邮件交互。您应该通过队列分离应用程序和电子邮件程序之间的交互。有关如何将SQL Server表用作队列,请参阅Using Tables as Queues。您可以直接从您的应用程序中排队邮寄请求,也可以使用存储过程插入数据并排入请求,或者作为最后的手段,在表上使用触发器来排列邮件请求。你的电子邮件应用程序(一个单独的服务)应该监视这个队列并通过发送实际的电子邮件(或者http网络请求)来为它提供服务。