问题标签 [firebird-3.0]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - Firebird 3,ADO.NET 数据提供者 5.0.5,内存逐渐增长
将 firebird 2.1 更改为 3.0 (SuperServer) 后,内存逐渐上升到最大硬件 (20GB) 大约一个月。Firebird 服务器有 6 个数据库,总大小约为 30 GB。客户端应用程序是使用 ADO.NET 数据提供程序 5.0.5.0 版的 .NET WinForm 和 Windows 服务
虽然我结束了所有客户端应用程序和服务(因此没有打开的连接),但 firebird 进程仍然需要 20 GB 的内存,并且只有在重新启动 firebird 服务器时才会释放。
在以前版本的 Firebird 中,在类似的大型数据库和相同的客户端应用程序上不会遇到这个问题(代码没有变化,只需切换到新的 ado.net 提供程序版本)
这是标准行为吗?新版本的 Firebird 配置有什么特别的安排吗?也许我忽略了 Firebird 3 的一些新奇行为?
是的,我使用using
了语句和dbConnection.Close();
我会为任何智慧而高兴
delphi - 如何使用 FireDAC 在 Firebird 3.0 上启用 WireCompression
我希望使用 WireCompression 连接到 Firebird Server 3.0。这是自 3.0 版以来的新功能,我很难做到这一点,我能找到的唯一记录说明是在 firebird.conf 中将 WireCompression 设置为 TRUE 并使用连接参数“wirecompression=true”。
这就是我到目前为止所得到的:
火鸟.conf:
连接代码:
连接已建立,但 vConnectionInfo 说:
最后两行说我有协议 v13 (P13) 并且数据是加密的 (:C) 但它应该是 P13:CZ 表示 zlib 压缩。
我在客户端的调试文件夹中有 zlib1.dll,并且 zlib1.dll 存在于 Firebird 服务器文件夹中的服务器上。
我可以连接到数据库,我没有收到错误消息。
我已经没有想法来应用压缩了,但我相信你们会帮助我!
sql - 基于字段值的两个计数
我有一个表table1
,它的field1
值从 1 到 5 我需要获取何时的记录数field1 = 1
和何时的剩余记录数field1 <> 1
。所以我可以这样做:
但是,这会给我两个正确的值作为结果中的两条记录,但我想知道有没有办法将两个计数值作为一个选择 SQL 中的列?
database - 计数 Firebird 3.0 bigint 与 Firebird 2.5 整数
在我的系统上,从 Firebird 2.5 迁移到 3.0 后,许多报告和其他功能开始出现问题,说明预期的是 Integer 而当前的是LargeInt
. 我看了一下,发现一些在 3.0 中使用 count 的搜索返回 abigInt
列,而在 2.5 中它返回一个整数列。
为了解决我所知道的方法,我必须对所有产生错误、经过测试和工作的东西进行强制转换,但这是一个很大的系统,它会做很多工作。
有谁知道在 Firebird 本身中解决这个问题的任何方法?一些配置,还是什么?
firebird - 根据外键计数条目
我有 2 张桌子,我们称它们为T_FATHER
和T_CHILD
,每个父亲可以有多个孩子,如下所示:
现在我想在T_CHILD
表中添加一个计数器,它以 1 开头并为每个新孩子添加 1,但不是全局的,而是每个父亲,例如:
我最初的想法是创建一个插入前触发器,用于计算给定父亲有多少孩子,并为计数器加 1。这应该可以正常工作,除非同时有 2 个插入,这将以相同的计数器结束。这种情况实际上从未发生过的可能性很高——但保存总比后悔好。
我不知道是否可以使用发电机,但不要这么认为,因为每个父亲都必须有一台发电机。
我目前的方法是使用上述触发器并向FATHER_ID
+添加唯一索引COUNTER
,以便只有一个同时插入通过。我将不得不在客户端处理异常(并重新尝试失败的插入)。
有没有更好的方法直接在 Firebird 中处理这个问题?
PS:这两个表中的任何一个都不会有任何删除,所以这不是问题。
c# - SELECT WHERE column1 = 1 AND column2 = MAX(column2)
我有这样的桌子
现在我想要做的是选择Column 1, Column 2, Column 3
WHERE Column2 = 1 AND Column 3 is maximum for column 2 ( 4
)
stored-procedures - 如何在 Firebird 存储过程中对二进制 blob 执行更新?
挑战在于存储过程将二进制值组装成 blob,然后保存表。问题是存储过程将 blob 作为文本使用,例如,如果我想插入 blob 字节 4,则插入字节 52(对于字节 ASCII 数字 4)。
我尝试了不同的演员阵容,但没有任何效果。如果存储过程将 blob 更新到表中,这是函数的一个参数,所以它工作正常。
如何在存储过程中使用二进制值(全字节)?
更新 Firebird 版本 3.0.0.32483 64 位
firebird - 如何创建由 SYSDBA 以外的用户拥有的数据库?
当我发出 isql 命令时:
我收到以下错误:
我错过了什么?如何向用户 milenio 授予必要的权限?
sql - 如何获取日期格式为“yyyy mm/dd”?
我正在尝试以这种格式从视图中输出时间戳字段,yyyy mm/dd
所以我尝试这样:
但是没有填充零所以我如何添加它们?
使用火鸟 3.0
stored-procedures - 如何使用存储过程的返回值作为列中的默认值?
我需要使用 firebird 3.0 中存储过程的返回值作为多列的默认值。
我的程序:
因此,我们必须在一些名为“NewOn”和“LastChangeOn”的特定列中填写当前时间。我从firebird本身找到了一个名为Current_Time的默认程序,但是毫秒总是'0000',例如'12:30:10.0000'。糟糕的是,我们需要数据库中的毫秒数。我自己的程序给了我们毫秒,但我们不能在我们的表中使用它。
表格示例:
当像这样创建表时,它调用 firebird-own 过程,它只给我们 0000 毫秒。我试图将我的程序称为 firebird 程序。此外,我在我的程序中使用和不使用“暂停”进行了测试,但这没有区别。
我还没有找到解决这个问题的方法,所以有人可以在这里帮助我吗?