标签: firebird

如何测量Firebird 2.1数据库中Blob占用的空间量?

我有一个生产数据库,使用Firebird 2.1,我需要找出每个表使用多少空间,包括blob.blob-part是棘手的,因为它没有使用标准统计报告.

我无法轻松访问服务器的桌面,因此安装UDF等不是一个好的解决方案.

我怎么能这么容易做到?

firebird firebird2.1

6
推荐指数
1
解决办法
2729
查看次数

dbExpress /未指定密钥

我正在使用dbExpress组件(Delphi 7)开发数据库程序.通过以下组件从数据库中检索数据:TSQLDataSet - > TDataSetProvider - > TClientDataSet - > TDatasource - > TDBEdit.到目前为止,表格已正常运作.TSQLDataset中的查询是

select id, name, byteken, timeflag from scales where id = :p1
Run Code Online (Sandbox Code Playgroud)

我在数据库表中添加了一个大的(2048)varchar字段; 当我将此字段添加到上面的查询(并将TDBMemo或TDBRichEdit连接到TDatasource)时,当我尝试编辑新文本字段中的值时,我收到以下消息

Unable to find record. No key specified.
Run Code Online (Sandbox Code Playgroud)

当表单上没有TDBMemo时(但在查询中使用varchar字段),我得到相同的错误.一旦从查询中删除varchar字段,一切都可以正常工作.

可能是造成这个问题的原因是什么?

====更多信息====

我现在已经在表单中定义了持久字段.保存表的键的字段的提供者标志设置为[pfInUpdate,pfInWhere,pfInKey],而所有其他字段的标志为[pfInUpdate,pfInWhere].这并没有解决问题.

持久字段在clientdataset上定义.当我在TSQLDataSet上定义它们时,不会出现关于"未指定密钥"的错误消息.程序仍然会显示此错误消息(我之前忽略了这一点):

EDatabase error: arithmetic exception, numeric overflow or string truncation
Run Code Online (Sandbox Code Playgroud)

大字符串字段在'displaywidth'和'size'中具有正确的值.

====更多信息====

我重写了表单以使用非数据感知组件.一个查询从数据库中检索数据(使用与我在TSQLDataSet中使用的查询字符串完全相同的查询字符串); 然后将数据传输到控件.在用户按下表单上的"确定"按钮后,数据将通过执行更新或插入的另一个查询传递回数据库.由于这可以正常工作,我不知道数据感知组件的问题是什么.

====又一段信息====

我在Stack Overflow上发现了这个问题,似乎解决了类似的问题.我将查询更改为

select id, name, name, byteken, timeflag, 
cast (constext as varchar (2048)) as fconstext
from scales
where id = :p1
Run Code Online (Sandbox Code Playgroud)

并将dbMemo的数据字段设置为'fconstext'.将文本添加到dbMemo后,'applyupdates'调用现在失败,并显示以下消息

column unknown 'fconstext' …
Run Code Online (Sandbox Code Playgroud)

delphi firebird dbexpress delphi-7

6
推荐指数
1
解决办法
3685
查看次数

Firebird 2.5.2更改blob子类型

是否可以更改BLOB字段的SUBTYPE?

我有一个带有SUBTYPE BINARY的BLOB需要将它更改为SUBTYPE TEXT,因为我在BLOB和带有SUBTYPE TEXT的BLOB中得到一些奇怪的字符我没有这个问题

firebird firebird2.5

6
推荐指数
1
解决办法
3924
查看次数

使用'Commit Retaining'会损害Firebird的性能吗?

在这一点上,下面引用的摘录似乎是矛盾的.

(我认为它们都很老了,第二个是从2004年开始,第一个提到Borland所以一定也要老了,所以也许它们已经过时了.)

第一个似乎表明提交保留使事务处于活动状态,因此将坚持OIT.

第二,如果我理解它意味着通过提交保留,现有的TID被标记为已提交,并且事务保持活动但具有新的TID,因此不会粘贴OIT.这第二个摘录与Interbase有关,我不知道这是否解释了看似矛盾的问题.

Firebird文档提取:

使用Firebird(和InterBase),Commit Retaining会使事务无限期地保持有趣.垃圾收集有效地停止在"标准"Borland RAD工具数据库应用程序和任何其他使用Commit Retaining的应用程序上.

Embarcadero Blog post extract

读取已提交,读写:

如果您不时保留提交,此事务可以永久运行而不会对性能产生负面影响.

firebird

6
推荐指数
1
解决办法
703
查看次数

是否可以在Firebird的存储过程中返回多行?

我想知道是否可以返回SELECTFirebird 1.5 中的查询中找到的多行,如下所示:

| FIELD1 | FIELD 2 |
--------------------
| 1.00   | 1       |
| 2.00   | 2       |
| 3.00   | 3       |

SET TERM /;

CREATE OR ALTER PROCEDURE TEST
RETURNS (VARIABLE1 DOUBLE PRECISION, VARIABLE2 INTEGER)
AS
BEGIN
  SELECT FIELD1, FIELD2 FROM TABLE INTO :VARIABLE1, :VARIABLE2;
END/

EXECUTE PROCEDURE TEST/

SET TERM ;/
Run Code Online (Sandbox Code Playgroud)

假设查询返回多个结果/行,则抛出以下错误:

声明失败,SQLCODE = -811

单例选择多行

显然,Firebird的引擎不允许我在变量中返回多个值.我正在开发一个我想要的Python软件,作为一个元组,例如,像[(1.00,1),(2.00,2),(3.00,3)]这样的东西,基于TEST程序.我正在使用kinterbasdb模块与GDB连接.

有没有办法做到这一点?

sql firebird stored-procedures

6
推荐指数
2
解决办法
2503
查看次数

无法在Firebird 2.5中声明变量,为什么?

我有一行查询:

DECLARE VARIABLE var_SecondsOfTime INTEGER;
Run Code Online (Sandbox Code Playgroud)

但运行查询后,我收到此消息:

引擎错误(代码= 335544569):动态SQL错误.SQL错误代码= -104.令牌未知 - 第1行,第9列.VARIABLE.

SQL错误(代码= -104):令牌无效.

我在互联网上随处可见,所有的例子都显示了我正在使用的相同的声明风格.

怎么了?

variables firebird declaration firebird2.5

5
推荐指数
2
解决办法
8829
查看次数

Chau Chee Yang的dbExpress和XE2 Enterprise dbExpress for Firebird有多兼容?

我使用的是Delphi 2010 Professional,它没有附带Firebird的dbExpress驱动程序.如果我开始使用Chau Chee Yang编写的Firebird dbExpress驱动程序,然后再升级到XE?企业(Firebird dbExpress驱动程序附带)代码才能运行?

delphi firebird dbexpress delphi-2010

5
推荐指数
1
解决办法
324
查看次数

如何清除firebird查询缓存?

如何清除firebird查询缓存以执行我的性能测试?

这里的 SqlServer示例

TKS

database firebird database-administration

5
推荐指数
1
解决办法
2649
查看次数

在Ubuntu(Java app)下监视对Firebird的SQL调用

刚刚从mySQL移动平台到firebird我发现很难找到一种可接受的方法来捕获从Java .jar应用程序传递到数据库服务器(Firebird)的SQL命令.我需要分析命令以及在执行时间等方面传递的查询的"成本".

使用MySQL可以使用maatkit工具包,但不幸的是,这似乎不适用于Firebird.

有没有人对Firebird的maatkit有适当的可比方法?或者使用strace或类似?

java sql ubuntu firebird monitor

5
推荐指数
1
解决办法
1477
查看次数

将行转换为列Firebird 2.5

序列:

   
table1
=====
id - Description
----------------
|1 |Proj-x
|2 |Settlers
|3 |Bank
|4 |Newiest

table2
=====
id table1Id value alternate-value
---------------------------------
|1| 1       |12   |null
|1| 4       |6    | null 
|1| null    |22   |Desktop 
|2| 2       |7    |null
|2| 3       |11   |null
|2| null    |2    |Camby Jere 
|3| 1       |8    |null 
|3| 4       |6    |null
|3| null    |7    |Camby Jere 

必须返回select指令

|table1.id|Proj-x|Settlers|Bank |Newiest|Desktop|Camby Jere
----------------------------------------------------------
|1        |12    |null    |null |null   |null   |null
|1        |null  |null    |6    |null   |null   |null …

sql firebird pivot multiple-columns firebird2.5

5
推荐指数
1
解决办法
5057
查看次数