问题标签 [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.

0 投票
0 回答
215 浏览

.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();

我会为任何智慧而高兴

0 投票
1 回答
1797 浏览

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 服务器文件夹中的服务器上。

可以连接到数据库,我没有收到错误消息。

我已经没有想法来应用压缩了,但我相信你们会帮助我!

0 投票
3 回答
386 浏览

sql - 基于字段值的两个计数

我有一个表table1,它的field1值从 1 到 5 我需要获取何时的记录数field1 = 1和何时的剩余记录数field1 <> 1。所以我可以这样做:

但是,这会给我两个正确的值作为结果中的两条记录,但我想知道有没有办法将两个计数值作为一个选择 SQL 中的列?

0 投票
3 回答
925 浏览

database - 计数 Firebird 3.0 bigint 与 Firebird 2.5 整数

在我的系统上,从 Firebird 2.5 迁移到 3.0 后,许多报告和其他功能开始出现问题,说明预期的是 Integer 而当前的是LargeInt. 我看了一下,发现一些在 3.0 中使用 count 的搜索返回 abigInt列,而在 2.5 中它返回一个整数列。

为了解决我所知道的方法,我必须对所有产生错误、经过测试和工作的东西进行强制转换,但这是一个很大的系统,它会做很多工作。

有谁知道在 Firebird 本身中解决这个问题的任何方法?一些配置,还是什么?

0 投票
3 回答
101 浏览

firebird - 根据外键计数条目

我有 2 张桌子,我们称它们为T_FATHERT_CHILD,每个父亲可以有多个孩子,如下所示:

现在我想在T_CHILD表中添加一个计数器,它以 1 开头并为每个新孩子添加 1,但不是全局的,而是每个父亲,例如:

我最初的想法是创建一个插入前触发器,用于计算给定父亲有多少孩子,并为计数器加 1。这应该可以正常工作,除非同时有 2 个插入,这将以相同的计数器结束。这种情况实际上从未发生过的可能性很高——但保存总比后悔好。

我不知道是否可以使用发电机,但不要这么认为,因为每个父亲都必须有一台发电机。

我目前的方法是使用上述触发器并向FATHER_ID+添加唯一索引COUNTER,以便只有一个同时插入通过。我将不得不在客户端处理异常(并重新尝试失败的插入)。

有没有更好的方法直接在 Firebird 中处理这个问题?

PS:这两个表中的任何一个都不会有任何删除,所以这不是问题。

0 投票
2 回答
210 浏览

c# - SELECT WHERE column1 = 1 AND column2 = MAX(column2)

我有这样的桌子

现在我想要做的是选择Column 1, Column 2, Column 3WHERE Column2 = 1 AND Column 3 is maximum for column 2 ( 4)

0 投票
1 回答
1203 浏览

stored-procedures - 如何在 Firebird 存储过程中对二进制 blob 执行更新?

挑战在于存储过程将二进制值组装成 blob,然后保存表。问题是存储过程将 blob 作为文本使用,例如,如果我想插入 blob 字节 4,则插入字节 52(对于字节 ASCII 数字 4)。

我尝试了不同的演员阵容,但没有任何效果。如果存储过程将 blob 更新到表中,这是函数的一个参数,所以它工作正常。

如何在存储过程中使用二进制值(全字节)?

更新 Firebird 版本 3.0.0.32483 64 位

0 投票
1 回答
1841 浏览

firebird - 如何创建由 SYSDBA 以外的用户拥有的数据库?

当我发出 isql 命令时:

我收到以下错误:

我错过了什么?如何向用户 milenio 授予必要的权限?

0 投票
1 回答
1283 浏览

sql - 如何获取日期格式为“yyyy mm/dd”?

我正在尝试以这种格式从视图中输出时间戳字段,yyyy mm/dd所以我尝试这样:

但是没有填充零所以我如何添加它们?

使用火鸟 3.0

0 投票
3 回答
645 浏览

stored-procedures - 如何使用存储过程的返回值作为列中的默认值?

我需要使用 firebird 3.0 中存储过程的返回值作为多列的默认值。

我的程序:

因此,我们必须在一些名为“NewOn”和“LastChangeOn”的特定列中填写当前时间。我从firebird本身找到了一个名为Current_Time的默认程序,但是毫秒总是'0000',例如'12:30:10.0000'。糟糕的是,我们需要数据库中的毫秒数。我自己的程序给了我们毫秒,但我们不能在我们的表中使用它。

表格示例:

当像这样创建表时,它调用 firebird-own 过程,它只给我们 0000 毫秒。我试图将我的程序称为 firebird 程序。此外,我在我的程序中使用和不使用“暂停”进行了测试,但这没有区别。

我还没有找到解决这个问题的方法,所以有人可以在这里帮助我吗?