Dav*_*vid 2 c# sql-server rest database-trigger
我需要使用SQL Server数据库表中的insert事件中的单个参数调用restful Web服务.我知道这不是理想的设计,但我无法控制任何一个终点.在最大负载下,此功能的使用不会超过100个事件/分钟.
我对其他想法持开放态度,但我想出的两个选择是;
我一直在研究选项2并在Visual Studio中创建了一个SQL CLR触发器项目但是在我添加System.Web对项目的引用之后将不会构建并且没有构建错误,而只是在输出窗口中说"构建失败".
是否可以在CLR触发器中使用哪些CLR库?
使用服务代理让我感到害怕,因为我只与服务代理一起处理过一个项目,发现很难实现.
关于如何从触发事件调用Web服务的任何想法将不胜感激.
大卫
触发器在语句的上下文和范围内运行,导致触发 - 这意味着,在触发器完全运行之前,该语句不会完成.
触发器应该非常灵活 - 小而快.你永远不应该从触发器调用外部服务,你不应该在触发器中包含游标,你不应该在触发器中进行任何繁重的工作或冗长的计算.
如果你真的必须这样做,我建议采用以下方法:
看到触发器只是将一些值放入"命令"表 - 那些长时间运行的进程需要完成其工作的值
有一个解耦,独立的进程(例如存储过程或其他东西)将定期检查"命令"表以完成新任务 - 这可以在SQL Server中使用SQL Server代理作业完成
解耦过程然后从"命令"表中获取信息,它是否正常工作,并更新数据库(如果需要)
这样,您的触发器很小且灵活且快速完成,因此不会减慢主进程/主系统的速度.漫长的过程是独立的,可以以最合理的方式实现(SQL Server中的存储过程,或者单独的独立命令行工具或任何有意义的工具).
| 归档时间: |
|
| 查看次数: |
2967 次 |
| 最近记录: |