【问题标题】:SQL Server fire off a web requestSQL Server 触发 Web 请求
【发布时间】:2012-09-16 11:32:44
【问题描述】:

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

我需要能够在 sql server 列更新后发送电子邮件。我有一个带有数据库邮件的触发器,但客户端上的数据库服务器不允许这样做。另一种方法是让该数字在准备好时触发网络请求。我会通过网络服务器上的网络服务来完成它,让它只轮询表格,但这似乎是很多浪费的循环。

有什么想法吗?

【问题讨论】:

  • 嗨 - 这是我在很多版本中问过自己很多次的问题(我从 6.5 开始使用 MSSQL)......而且,上次我检查时,“轮询”仍然是最好的回答 :( 我希望 .Net 集成在较新版本的 MSSQL 中可能是一个很好的解决方案。但我向你保证,从 SQL 触发器触发 COM/ActiveX 对象肯定不是(在MSSQL2000 或更低):(
  • 这有点糟糕,我现在正在研究 SQL CLR Web 请求
  • 我很好奇 CLR 是否适合您。它应该 - 我希望它是这样的:)
  • 我使用 SQL CLR 触发 Web 请求,然后 Web 服务器发送电子邮件

标签: c# asp.net .net sql-server sql-server-2005


【解决方案1】:

您可以从 SQL Server 执行托管代码。创建一个 Windows 服务,让它在 C# 中做任何你想做的事情,以满足你的需要,SQL 服务器调用它。

结帐this示例程序链接

【讨论】:

    【解决方案2】:

    不要从 SQLCLR 调用 Web 服务,尤其不要通过 SQLCRL 从触发器调用 Web 服务(或发送电子邮件)。使用 SQLCLR 进行外部 http 或 smtp 访问是一个坏主意的原因有很多,但是从触发器中执行它是可怕的。试想一下,当 Web 服务以 10 秒的延迟响应时,您的应用程序将如何表现......

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多