【问题标题】:Database Backup数据库备份
【发布时间】:2011-02-20 01:23:59
【问题描述】:
场景
我想从 7 个客户端数据库备份到 1 个服务器数据库。
我不知道数据库的结构{服务器或客户端数据库}。
两个数据库都有旧数据。现在我必须让该工具为此进行备份。
并且应该也可以备份旧数据[如果对旧数据进行了任何更新。]
请帮助找到解决方案。
1.我该如何处理这个问题。
2.数据库未指定,可能是MS access或者Sql server 2005
3.我可以在其中实现这个[我正在考虑用c#来做]
请帮我找到解决办法
【问题讨论】:
标签:
database
sql-server-2005
ms-access
backup
【解决方案1】:
我不确定您为什么要这样做 - 如果您只是尝试复制客户端数据库(我将其解释为“基于文件”),那么为什么不简单地复制他们的文件作为更广泛的备份策略的一部分?
如果您编写备份内容以将所有数据放置在基于服务器的 RDBMS 中,那么您还必须考虑以后如何恢复该信息 - 这可能意味着您需要更多的编码。
所以 - 我认为这不是一个好主意,但如果你下定决心,我会先编写一个类(几乎是抽象的),专门用于读取客户端数据库的结构(表、字段、视图等)。然后我会继承它以获得一个特定的类来为每种类型的客户端数据库执行此操作。完成后,您可以使用 ADO.Net 从客户端数据库中的表中读取值,使用信息填充数据表,然后将该信息写回基于服务器的数据库。
虽然我不喜欢这个想法,但我真的不能强调太多——它似乎过于复杂,而且也不会处理函数等。
祝你好运
马丁
【解决方案2】:
除了这样做的可取之处之外,对于问题的特定子集,一个简单的答案是为目标 SQL Server(或任何服务器数据库)创建一个 DSN,并在 Access 中逐表导出到 DSN。您可以通过 Access UI 执行此操作,并且可以使用 DoCmd.TransferDatabase 在 Access 中自动执行此操作。找出正确的连接字符串可能有点繁琐,而且您还需要对导出的表进行重命名,这样数据库之间就不会发生冲突,但这可以通过一些 VBA 代码轻松处理。
我发布这个只是因为许多人忽略了导出到 ODBC DSN 的 Access 功能,这不需要编写 DDL 等。不过,它可能会或可能不会对目标数据类型做出正确选择,因此您必须在任何特定情况下查看它是否足够好。