如何在 C# 代码中捕获 SQL 服务器触发器

How to catch SQL Server trigger in C# code

我必须为使用 ERP 系统的现有数据库创建一个外部服务。

编辑:服务将 运行 在同一台机器上,其中 SQL 服务器是 运行。

服务必须在 table 上侦听带有文档的触发器。

场景:

  1. 用户创建文档
  2. 触发器调用服务方法
  3. 方法查询数据库获取数据,创建文档并发送到外部API。

是否可以从 C# Worker 服务中捕获类似的触发器?

技术上可以在触发器中 运行 任意 SQL CLR 代码,并在单独的服务中对代码 运行 进行远程 Web 服务或 rpc 调用。但是由于事务期间的触发器 运行s 和您 运行 的任何代码都可以延迟或撤消数据库更改,因此不推荐这样做。 ERP系统可能不支持。

所以这里最好的模式是让触发器将一行写入本地 table,然后让外部进程轮询 table 并完成剩下的工作,或者配置更改数据捕获或更改跟踪并让外部程序查询。