一尘不染

SQL CLR触发器可以做到这一点吗?或者,还有更好的方法?

sql

我想编写一个监视数据库表的服务(可能在c#中)。当将记录插入表中时,我希望服务获取新插入的数据,并使用它执行一些复杂的业务逻辑(对于TSQL来说太复杂了)。

一种选择是让服务定期检查表以查看是否已插入新记录。这样做的问题是,我希望服务在插入发生后立即知道它们,并且我不想破坏数据库的性能。

做一些研究,似乎编写CLR触发器可以完成这项工作。我可以在发生插入时触发的C#中编写触发器,然后将新插入的数据发送到Windows或WCF服务。

您认为SQL CLR触发器的良好(甚至可能)使用是什么?

关于如何实现此目标还有其他想法吗?


阅读 200

收藏
2021-03-10

共1个答案

一尘不染

可能您应该取消后处理与插入的耦合:

在“插入”触发器中,将记录的PK添加到队列表中。

在单独的服务中,请从队列表中读取并执行复杂的操作。完成后,将记录标记为已处理(连同错误/状态信息),或从队列中删除记录。

2021-03-10