仅备份和恢复 Advantage 数据库中的某些表
Posted
技术标签:
【中文标题】仅备份和恢复 Advantage 数据库中的某些表【英文标题】:Backing up and restoring only certain tables in an Advantage Database 【发布时间】:2012-07-25 22:27:27 【问题描述】:在 Advantage 中进行备份时,我们只想备份一些包含一些结构数据的表。这些表可能会在数据库更新中发生变化,但大多数表不会。其他表包含大量 blob 数据:可能是 10 多个 gigs。
如果数据库更新出现问题,并且我们想要恢复备份的表,我们有哪些选择来保留原始大表,但恢复选定的表?将它们还原到现有数据库,保留旧的大表?释放大表并将它们添加到新恢复的数据库中?
(注意:备份表和大表之间没有RI规则,但大表确实引用备份表中的autoincs。)
【问题讨论】:
【参考方案1】:您可以使用包含列表来限制备份或恢复的表。例如,如果您使用 adsbackup.exe 命令行实用程序,您可以将备份限制为两个表:
adsbackup -i"table1,table2" test.add c:\mypath\backup\
然后通过还原,您还可以将其限制为特定文件:
adsbackup -r -i"table1,table2" c:\mypath\backup\test.add c:\mypath\restore\test.add
请注意,当使用包含列表指定恢复操作时,只有在字典 (.add) 文件不存在时才会恢复它。因此,如果您使用包含列表还原到现有字典,它只会复制指定的表。
【讨论】:
那么恢复到包含列表的现有字典会保留未包含表中的数据吗?这不会导致表与非包含表的字典问题不同步? @EricG:一般来说,不会因为字典没有被复制(如果你恢复到现有位置)。但是如果未恢复的表和恢复的表之间存在某种关联,那么就会导致逻辑上的不一致(你说没有 RI,但有时数据库最终会随着时间的推移而产生隐含的关联)。 太棒了。我会仔细检查并运行一些测试,以确保我们没有遗漏任何东西。感谢您澄清这一点! @EricG:要注意的一件事是,在恢复到现有数据库时,备份和恢复的表之一是否发生了结构变化。如果结构发生变化,它将无法恢复(因为在使用包含列表时它不会更新字典)。在这种情况下,您需要手动更改表结构以匹配备份。或者恢复到新位置,然后使用SQL语句将数据恢复到新结构的表中。以上是关于仅备份和恢复 Advantage 数据库中的某些表的主要内容,如果未能解决你的问题,请参考以下文章