如何跟踪服务 firebird

2024-02-23

如何使用delphi xe10跟踪服务firebird服务器的所有事件? 这是我的代码:

my := TIBControlService.Create(Self);

my.ServerName := '127.0.0.1/3050';
my.Protocol := TProtocol.TCP;

my.LoginPrompt := false;
my.TraceFlags := [tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt, tfConnect, tfTransact, tfBlob, tfService, tfMisc];

my.Params.Add( 'user_name=SYSDBA' );
my.Params.Add( 'password=masterkey' );

// -----
mh := MonitorHook;
mh.TraceFlags := my.TraceFlags;

Self.IBSQLMonitor1.TraceFlags := my.TraceFlags;
mh.RegisterMonitor(Self.IBSQLMonitor1);

Self.IBSQLMonitor1.Enabled := true;
Memo1.Lines.Add( Format('GetMonitorCount: %d',[mh.GetMonitorCount]) );


my.Attach;

Memo1.Lines.Add( Format('Active: %s',[System.StrUtils.IfThen(my.Active,'yes','no')]) );

and

procedure TForm1.IBSQLMonitor1SQL(EventText: string; EventTime: TDateTime);
begin
    Memo1.Lines.Add(EventText);
end;

Result:

GetMonitorCount: 1
Active: yes

[Application:]
:[Attach]

[Application:]
:[Query]

但这个结果只是来自我的申请。当我从另一个进程(例如)连接时,我的应用程序不显示此事件。


  1. 当谈论 Interbase/Firebird 这个术语时EVENT具有非常特定的含义,即向订阅这些文本常量的客户端发送文本常量的特定 SQL 命令。

    See http://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-psql-coding.html#fblangref25-psql-postevent http://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-psql-coding.html#fblangref25-psql-postevent

    但是,客户端应该订阅与 PSQL 块发布的完全相同的文本字符串。有人讨论过启用基于掩码的订阅,这可能使订阅所有 SQL 事件成为可能,例如*.*匹配 Windows 中的所有文件,但据我所知,它们从未实现。

    这就是 Firebird 中“事件”的含义,但这似乎不是您的意思,相反,您似乎想要监视 SQL 服务器和所有应用程序之间流动的所有类型的活动,从 SQL 命令等开始。

    如果是这样的话,那么一般来说是没有办法的。你必须决定你到底想要什么以及为什么想要,也许会有一些partial解决方案。

  2. Firebird 2.5引入了所谓的追踪API,它允许您订阅某些操作并收到通知。不过,这往往会给引擎带来很大的负载,具体取决于订阅过滤器的模糊程度以及服务器收到的请求数量 - 它可能会增加 RAM 和 CPU 使用率,直至完全无法使用。

    • 可以订阅的活动种类有限。例如,读取 BLOB 的过程不受监控。当我询问时 - 我正在与臭名昭著的“无效的 BLOB id”作斗争,这是由德尔福dbExpress图书馆的怪癖 - 有人告诉我“没有人需要这个,你也没有理由需要它。你制作了一个演示项目,并将其发送给我们 - 我们为你解释了这种行为”。那时,BLOB 访问跟踪对我有很大帮助,但客观地说,这是我真正需要它的一个也是唯一的情况。

    • 您可以看看一般可以得到什么火鸟跟踪管理器- 从 2.5 开始,CLI 实用程序是 FB 发行版的一部分。

    • 你可以看看火鸟分析器,一个免费的简单 GUI 工具http://fbprofiler.sf.net http://fbprofiler.sf.net

    • Firebird 的商业 DB IDE(例如 IBExpert 或 UpScene TraceManager 以及其他可能)通常具有 Trace API 支持。

    • 您可以使用 Trace API 进行自己的实现,从Program Files\Firebird\Firebird_2_5\doc\README.trace_services.txt and Program Files\Firebird\Firebird_2_5\include\ibase.h。第三方库也可能发生这样的情况统一数据库 or IB对象已将 API 翻译为 Delphi。我想我看到了一些关于跟踪的东西UIB但我不确定。我没想到这样的图书馆会成为Delphi分布:来自Delphi立场Firebird是他们的直接竞争对手英特贝斯 and IBX图书馆几乎不会有兴趣偏离自己的英特贝斯通过支持Firebird-仅限功能。

  3. 如果您只关心像 Delphi 这样的本机应用程序,您可能会决定制作自己的中介层fbclient.dll并将其安装在所有客户端计算机上,而不是库存 DLL。与传统模拟相同GDS32.DLL,如果您的应用程序使用了。

    • 该 DLL 应该完全提供所有 API 调用,这两个经典调用均在 IB6 文档中描述:http://firebirdsql.org/en/reference-manuals/ http://firebirdsql.org/en/reference-manuals/包含所有 IB6 之后的更新,以及新的 Firebird 3“面向对象的 API”。
    • 它应该以您选择的方式记录调用,然后应该将调用代理到您将使用不同文件名隐藏的原始客户端 DLL 的副本。应该在您想要拦截和监视的每台计算机上安装它,而不是安装标准客户端 DLL。
    • 使用经典 API 应该不会很难,人们正在这样做,尽管没有发布。但新的 ooAPI 可能具有挑战性。
    • 它只会拦截应用程序,通过fbclient.DLL界面。 Java 应用程序使用Jaybird和 C# 应用程序使用.Net 提供商库可能会使用底层有线协议跳过fbclient.dll因此你的插入器也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何跟踪服务 firebird 的相关文章

  • Delphi TListBox iOS 制作新的项目样式/行为

    我需要显示自定义数据 为了example我需要显示包含姓名 描述和照片的联系人列表 理想情况下 我还想在那里显示自定义数据 例如用于发起电话呼叫的按钮 默认样式不太符合我的要求 但相当接近 因此 据我所知 如果我可以创建自定义样式 TLis
  • Delphi:平滑折叠/展开形式

    需要你的帮助 我一直在寻找 我在德尔福西雅图 试图平滑调整表单底部的大小 就我而言 调整大小 只是有点折叠 展开 如下所示 我怎样才能意识到这一点 我尝试过使用 TTimer procedure TForm1 Timer1Timer Sen
  • 如何将参数传递给 OLE 自动化对象(例如 MS Word)

    这主要是一个Delphi语法相关的问题 调用 OLE 对象的方法时 我需要将参数设置为 True 我需要在Word Automation中设置 这是来自词参考 http support microsoft com kb 285885 en
  • 如何发送/接收 JSON?

    我知道这是一个愚蠢的问题 但我通常不进行 Web 编程 并且被要求发送一些 JSON 数据并接收一些回报 我用谷歌搜索 很清楚如何编码和解码 JSON 数据 但我对此很陌生 我不知道如何与给定的 URL 进行通信并说 这里有一些数据 请发回
  • 是否可以确定 dbEdit 中的文本是否比可见文本长?

    在某些表单上 我的 dbEdits 有时不够宽 无法显示其字段可能包含的所有文本 对于他们我有以下代码 procedure Tgm12edLots dbeLotNameMouseEnter Sender TObject begin with
  • 构建多线程 TCP/IP 服务器

    我想构建一个可供最多 100 个并发客户端使用的 TCP IP 服务器 但仍不确定如何开始 至少我需要服务器 监听客户端 并将它们全部存储在数组或列表中 对于每个客户端 它需要根据其客户端状态接收和发送数据 当有人连接或断开连接时 服务器应
  • 德尔福:idHttp+SSL

    请解释一下如何使用 SSL https 从服务器下载文件 我在互联网上没有找到合适的答案 每个人都说 TIdSSLIOHandlerSocket 但我只有 TIdSSLIOHandlerSocketOpenSSL 如果我使用 TIdSSLI
  • 如何隐藏 WebBrowser 直到网站完成加载/下载过程?

    我想知道我该如何隐藏WebBrowser直到网站加载过程完成 另外 我使用 Panel1 和WebBrowser在它的上面 为什么 好吧 这样 我可以完全像我想要的 WebBrowser 一样设置 Panel1 的大小和位置 然后将 Web
  • Move() 从动态字符串数组中插入/删除项目

    使用 System Move 从字符串数组中插入 删除项目并不像从其他简单数据类型数组中插入 删除项目那么容易 问题是 字符串在 Delphi 中是引用计数的 在引用计数数据类型上使用 Move 需要对内部编译器行为有更深入的了解 这里有人
  • 如何使用 Delphi Sydney 10.4.2 和 Edge Webbrowser 组件获取 HTML SOURCE

    I have TEdgeBrowser在德尔福 10 4 2 中 我想从 HTML 代码中提取基于 RegEx 的字符串 在过去 这是可能的TWebBrowser 仅适用于 IE 11 或更低版本 作为 selectedEngine 但我的
  • 条件表达式在包内是否被破坏?

    考虑以下片段 requires designide rtl vcl IF RTLVersion lt 19 0 E2026 Constant expression expected IF CompilerVersion 22 0 same
  • Winform 没有.NET 框架?

    我必须创建一些表单并将其作为直接 EXE 提供 而不是安装程序 它安装 NET 框架 最终用户对此不满意 他们想要可以直接打开和工作的东西 我知道它可以作为网络完成 但我正在寻找 winforms 吗 请建议哪种工具 技术可以处理这个问题
  • 从单个应用程序中的多个线程调用 dll 函数是否安全?

    我正在 Delphi 2009 中编写一个服务器应用程序 它实现了多种类型的身份验证 每种身份验证方法都存储在单独的 dll 中 第一次使用身份验证方法时 会加载适当的 dll 仅当应用程序关闭时 DLL 才会被释放 在服务器线程 连接 之
  • EIdOSSLUnderlyingCryptoError 和“使用 SSL 连接时出错。错误:14094410...”

    我在 OS X 上的 Delphi 10 1 Berlin 中遇到 Indy 组件问题 我正在使用TIdHTTP使用 HTTPS 连接到 Web 服务 问题是从 OS X 客户端连接到服务器 在 OS X 上运行时 我总是遇到同样的错误 P
  • 带有 Firebird 的 .NET 实体框架:UTF-8 数据库出现错误“超出实现限制。块大小超出实现限制”

    我将 Firebird ADO NET 提供程序版本 5 5 与实体框架 5 结合使用 对于 Firebird UTF 8 数据库 带有投影的 LINQ to SQL 查询 包括有条件地将字符串属性设置为常量 会导致错误 超出实现限制 块
  • 为应用程序启用主题

    我有一个旧的应用程序 在Win XP中的delphi 7中启动 现在我正在使用delphi 2009 win Vista 如果我开始一个新项目 所有按钮都有一个圆形边缘 但在我的旧应用程序中 所有按钮都有 方形 形状的外观 有什么设置我错过
  • 如何允许表单接受文件删除而不处理 Windows 消息?

    在 Delphi XE 中 我可以允许我的表单接受文件 拖放 但不必处理裸窗口消息吗 您不需要处理消息来实现这一点 你只需要实施IDropTarget并打电话RegisterDragDrop RevokeDragDrop 这真的非常非常简单
  • 如何读取注册表项的默认值

    我有一个 Delphi XE2 项目来使用注册表项进行某些操作 所以我定义了以下代码 procedure TMainForm BitBtn01Click Sender TObject var RegistryEntry TRegistry
  • Firebird数据库模式/数据差异工具

    RedGate http www red gate com为 Microsoft SQL Server 制作一个工具 允许您捕获两个数据库之间的差异 它生成更新数据库模式所需的脚本 同时保留数据 我需要为 Firebird 数据库找到这样的
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref

随机推荐