在运行时复制并使用进度数据库文件

问题描述 投票:0回答:1

我想从我已连接的数据库创建一个文件格式的副本数据库。

创建它后,我想立即用它做一些事情(填充它,运行查询等)。

这可能吗?

示例.p

/* Copy currently connected 'mydb' database into new .db file with same schema but without any database rows */
RUN copyCurrentDatabaseToNewFileBasedDatabase.p("mydb", "C:\mydatabase\mydatabase.db").

/* Disconnect from current 'mydb' database */
DISCONNECT mydb.

/* Connect to copied and empty 'mydatabase.db' database */
CONNECT VALUE("-db C:\mydatabase\mydatabase.db -H localhost -S 20000").

/* Populate the copied database with some data */
RUN populateCopyDatabase.p.

/* Perform queries on the copied and populated database */
RUN queryCopyDatabase.p.
database copy database-schema openedge progress-4gl
1个回答
0
投票

您无法从 ABL 复制数据库。这是一个 shell 命令。

procopy 要求数据库离线(没有启动服务器,也没有单用户客户端)。

数据库在线时可以进行在线备份:

probkup online mydb mydb.bkup

然后恢复

prorest mydatabase mydb.bkup

然后您可以连接到新数据库(单用户-1或启动服务器进程并在共享内存中连接,无需-1)。但有一点需要注意。当仍然加载持久过程或加载基于类的对象来保存对“mydb”中的表的引用时,DISCONNECT 将被默默地忽略。

© www.soinside.com 2019 - 2024. All rights reserved.