我需要使用SQL Server数据库表中插入事件的单个参数调用宁静的Web服务。我知道这不是理想的设计,但我无法控制任何一个终点。在最大负载下,此功能的使用不会超过100次/分钟。如何从SQL Server调用宁静服务触发器
我接受其他想法,但我提出的两个选择是;
- INSERT触发器 - 服务代理 - .NET Windows服务来调用Web服务
- C#CLR触发调用RESTful服务直接
我一直在努力选项2并创建了一个SQL CLR触发器项目在Visual Studio中,但在添加引用到System.Web
后,项目不会生成,并且没有生成错误,只是在输出窗口中显示“生成失败”。
CLR触发器中可以使用哪些CLR库有一些限制吗?
使用服务代理让我感到害怕,因为我只与服务代理一起工作过一个项目,发现它很难实现。
有关如何从触发器事件调用Web服务的任何想法将不胜感激。这意味着,该语句不会完成,直到触发完全运行 -
大卫
为什么你需要在SQL CLR触发器中引用'System.Web'?触发器是后台工作者 - 而'System.Web'包含基于webforms的GUI控件,大多数 - 很不清楚为什么你需要这个参考。是的:SQL CLR有一套非常有限的已经部署在SQL Server内部的程序集 –
另外:触发器在引起它触发的语句的上下文和范围内运行。触发器应该**非常灵活** - 小而快。你永远不应该从触发器中调用外部服务,你不应该将游标包含在触发器中 - 所有这些都会导致系统性能下降,并且确实是非常糟糕的事情。尝试重新考虑你的情况,并确保触发器只做非常小的任务 - 没有繁重的工作,没有长时间的计算,没有外部呼叫等。 –
我复制了一个调用restful服务的现有项目的引用。我不确定哪些是我需要的,并且都与它们一起使用,调用Web服务的代码使用'(HttpWebRequest)WebRequest.Create(EndPoint + parameters);'。我可能只能使用System.Net – David