我有一张桌子可以接收来自第三方软件的消息,我需要一个触发机制来调用我的dotnet代码。调用SQLCLR的触发器的优点和缺点是什么,然后可以调用Web服务,例如只是让我的代码轮询表进行更改。怀疑桌子的平均负荷会很小,也许每天有几千笔交易。从触发器或轮询调用SQLCLR?
回答
你不说你使用的是什么版本的SQL Server,但如果它是2005+,Service Broker为这个做。在你的触发器中,在队列中输入(短)消息。让你的服务在队列上执行WAITFOR,然后触发RECIEVE抓取消息。看看是否没有什么可做,比旋转周期更好。
该版本是2005年,我对服务代理犹豫不决,因为从我读的内容来看,安装起来有点复杂,但情况并非如此? – retslig
虽然有一些问题,但并没有那么糟糕。展望未来,SQL Server产品中越来越多的功能是通过服务代理实现的。你会在学习中帮助你。 :) –
我个人而言,会从未呼叫触发一个Web服务。我会编写一个服务来轮询表中的新数据并异步调用Web服务。
的主要问题是,如果你在呼唤一个触发Web服务,那么你可以进入的情况下,由此您把锁打开很长一段时间。如果该锁已升级为表锁,则在此期间阻止表上的所有操作。
它也不会留给你一个很好的重试策略应该你的Web服务调用失败,无论出于何种原因。你是否期望你的触发器以某种方式将行标记为稍后重试?什么会触发该重试?
利用基于服务的方式,你把它简单得多,并且与运行到锁定问题的要少得多的机会 - 这可能会非常棘手,在最好的时候诊断 - 特别是如果他们是短暂的。
+1调用长时间运行和原则上不可靠的外部触发器让我感到紧张。 – usr
- 1. LocalDB中的SQLCLR触发器/过程?
- 2. SQLCLR触发器与Windows服务。什么时候适合使用SQLCLR?
- 3. 用于GITScm轮询的GitHub挂钩触发器不起作用
- 4. 存储过程VS SQLCLR触发
- 5. FTP/FTPS适配器自定义触发器/轮询器
- 6. 调用从SQLite触发器(机器人)
- 7. SQLCLR触发器或审计跟踪存储过程的可行性?
- 8. 弹簧批量/集成动态轮询器/触发器
- 9. WebJob QueueTrigger如何触发,轮询或事件?
- 10. T-SQL:双重触发,轮询或.NET异步线程?
- 11. 如何从MySQL触发器调用StoredProcedure或函数?
- 12. 从MySQL触发器调用PHP函数
- 13. 从触发器调用的SQL过程
- 14. ActiveRecord回调或MySql触发器?
- 15. SQLCLR - 包装COM调用
- 16. SqlDependency与SQLCLR调用WebService
- 17. ejb轮询器每隔30秒触发一次
- 18. 如何手动触发ftp入站通道适配器轮询?
- 19. MySQL触发器+通知一个长轮询Apache/PHP连接
- 20. 从存储过程调用触发器(ROLLBACK触发器会发生?)
- 21. 调用aspnet_delete_user SP触发器
- 22. 显式调用触发器
- 23. @Version或触发器?
- 24. 通过轮询从作业运行中触发定时器上的Jenkins作业
- 25. 总计 - 触发或查询?
- 26. 从SQL Server触发器或ON INSERT中触发XMPP消息
- 27. MySQL触发器使用触发器查询中的数据
- 28. 触发器/从轨道转轮内部订阅websocket-rail事件
- 29. 调用另一个触发器的Oracle触发器
- 30. 在空JComboBox触发器上调用addItem触发器actionPerformed事件
可能的情况下始终避免轮询。为什么不使用触发器? –