ADO和Microsoft SQL数据库备份和归档

本文关键字:备份 SQL Microsoft ADO 数据库 | 更新日期: 2023-09-27 18:00:09

我正在重新设计/升级一个工具。数据库通信使用C++(非托管ADO),并连接到SQL server 2005。

我对归档和备份/恢复技术有一些疑问。

  1. 通常,归档与备份/恢复不同。有人能提供任何链接来解释我吗?目前该解决方案使用bcp工具进行存档。我在代码中看到了很多对表名的依赖。在选择设计时,我必须考虑哪些因素(考虑到我必须点击按钮进行备份/归档,数据库大小最大为100mb)

  2. 将整个通信转移到.net会有什么帮助吗?考虑到许多ORM工具。所有的业务逻辑和UI都在C#中

  3. 验证存档数据的最佳方法是什么?

附言:这个问题可能太高了,但我没有得到任何适当的链接来理解这一点。如果有人能回答,那将是非常有帮助的。我可以提供更多细节!

提前感谢!

ADO和Microsoft SQL数据库备份和归档

在100MB的情况下,我认为您可能不应该在归档上花费太多时间,而应该使用传统的备份策略。数据库的大小非常小,因此归档将是一项非常精细的操作,收益非常小,因为归档过程通常只与大型数据库相关。

一般来说,数据库备份是在发生灾难(意外数据删除、服务器崩溃等)时提供可恢复性的一种方式。归档主要意味着对数据进行分区。

归档的一个可能目标是保持特定的数据可供查询,但不能更改它。在处理大容量数据库时,这是提高性能的一种很好的方法,因为只读数据的索引可以比"热"数据更密集。它还允许您将只读数据移动到一个独立的RAID分区,该分区针对read操作进行了优化,并且不必使用典型的RDBMS IO。此外,从常规数据库中删除非活动数据意味着表中包含的数据大小将减小,这将提高整个系统的性能。

存档通常是出于法律原因。有问题的数据可能对业务不再重要,但美国国税局或银行规则要求它在一定时间内可用。

使用SQL Server,您可以使用分区策略归档数据。这通常涉及到确定拆分数据所依据的标准。这方面的一个例子可以是日期(即,3年以上的数据将被移动到数据库的存档部分)。在大型系统的情况下,根据地理标准(即美洲在一台服务器上,欧洲在另一台服务器)分割数据也可能是有意义的。

回答您的问题:

1) 请参阅上面的说明2) 这实际上取决于升级的目标是什么。将其迁移到.NET将获得要管理的代码,但这对业务有多重要?3) 如果您决定进行分区,验证它是否有效可能包括在原始数据库上发出一个查询,以查找在用于分区的阈值之前和之后都包含值的数据,然后拆分数据,然后重新发出查询以验证它是否仍返回同一记录集。如果您将系统配置为使用自动滑动窗口,您还可以密切关注系统,以确保数据将自动移动到存档分区。

同样,如果100MB不是打字错误,我认为您的数据库太小,无法从归档中真正受益。如果您的目标是加快速度,请将系统安装在能够将整个数据库加载到RAM的服务器上,或者使用SSD驱动器。

如果出于法律或管理原因需要建立数据归档,请查看水平表分区。这是一个非常直接的过程,主要由SQL Server自动处理。

希望这能帮到你!