首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TADOConnection.OnExecuteComplete / OnWillExecute事件未用TADOTable调用

TADOConnection.OnExecuteComplete / OnWillExecute事件未用TADOTable调用
EN

Stack Overflow用户
提问于 2016-01-27 11:22:55
回答 1查看 300关注 0票数 1

我试图跟踪SQL命令。我读了这篇文章:How can I monitor the SQL commands send over my ADO connection?

它确实适用于选择,但不适用于删除/插入/更新.

配置:一个TADOConnection (MS ),一个TADOTable,一个TDatasource,一个带有TDBNavigatorTDBGrid

因此,我可以跟踪在打开表时发生的SELECT,但是当我使用DBNavigator来创建UPDATEINSERTDELETE记录时,什么也不会发生。

当我使用TADOCommand删除记录时,它也能工作。它似乎不工作,只有当我使用DBNavigator,所以也许是一个线索,但我没有找到任何关于这一点。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-27 17:12:00

希望有人能为您指出一个预先存在的库的方向,该库可以为您记录日志。特别是,如果FireDAC是一个选项,您可以看看它在这里说了什么:

%28FireDAC%29

当然,将应用程序从使用Ado转换为FireDAC可能不是一种选择,但取决于您的需求有多大,您可以将FireDAC使用的特定于Server的事件警报方法提取到Ado应用程序中。我在一段时间前对此进行了简要的研究,看起来这是相当简单的。

在使用FireDAC之前,我实现了一个服务器端解决方案,用于捕获插入、更新和删除。大约10年前,我不得不这样做(对于Server 2000来说),这是一个相当不错的性能设置。

概括地说,它是这样运作的:

Sql Server支持MS所称的“扩展存储过程”,这些过程是在自定义DLL中实现的(现在MS可能以不同的名称引用它们,甚至不再支持它们)。这里有Delphi库,它提供了一个包装器,使这些库能够用Delphi编写。当然,现在,如果您的Server是64位,则需要生成64位DLL。

您可以编写扩展存储过程来记录更改,然后在数据库中为插入、更新和删除编写自定义触发器,这些触发器将涉及到的行的数据提供给您的XSP。

幸运的是,当我完成这个项目的时候,我对它的需求就消失了,在我开始进行压力测试和性能分析之前,它确实起了作用。

当然,并不是每个环境都允许/能够在Server上安装s/ware和触发器代码。

出于兴趣,您还可以看看https://msdn.microsoft.com/en-us/library/ms162565.aspx,它提供了一个用于跟踪Server活动的SMO对象,尽管目前它似乎只有32位。

有趣的是,我可能会尝试为作为TAdoTable/TAdoQuery基础的记录集对象实现一个事件处理程序,它可能会捕捉到您想要的更改,但不要屏住呼吸.

当然,如果您只对客户端日志感兴趣,那么一种方法就是为数据集的AfterEdit、AfterInsert和AfterDelete事件编写处理程序。当然,这并不能保证更改在服务器上得到实际应用,但可以提供用户活动的准确记录,如果这足以满足您的需要的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35035977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档