如何从delphi应用程序监视SQL Server数据库表

时间:2012-03-12 16:50:35

标签: sql-server delphi

如何从Delphi应用程序监控特定表(实时) 并获取新的和更新的记录数据?

2 个答案:

答案 0 :(得分:8)

通常,您可以使用数据库事件/通知/警报。确切的术语和实现取决于DBMS。有关详细信息,您可以在AnyDAC documentation检查“DBMS警报机制”。

在后端,您可能需要为所需的表实现触发器。对于某些DBMS,它不是必需的。例如,使用Firebird,触发器必须调用POST_EVENT语句。使用SQL Server,必须调用一组特殊的查询更新通知API运算符来准备表。

在客户端上,您应该使用特殊的API,或者标准的SQL查询机制。例如,使用Firebird必须使用特殊事件API。使用Oracle后台线程+标准SQL API。

Delphi实现依赖于DBMS和数据访问组件。一些例子:

  • dbGo(ADO)在使用特殊API实现时不支持通知;
  • dbExpress - 相同;
  • IBX - 将TIBEvents与Firebird一起使用;
  • AnyDAC - 使用TADEventAlerter。它以统一的方式为许多DBMS支持许多不同的机制。 披露:AnyDAC是我所代表公司的旗舰产品。

答案 1 :(得分:1)

SQL Server 2005及更高版本有一个通知机制......但我不知道有任何支持这种机制的免费组件......

如果商业组件是一个选项,Devart SDAC支持此选项。

我看到的唯一其他选项是轮询(可能来自后台线程) - 但轮询通常是你想避免IMO的事情。