【问题标题】:Ways to backup database data备份数据库数据的方法
【发布时间】:2014-01-20 13:04:31
【问题描述】:

我正在为特定的网络应用程序进行自动化测试。它使用数据库来持久化数据(本例中为 SQL Server)。

在我们的自动化测试中,我们执行了多项数据库更改(插入、更新)。在执行完测试后,我们希望将数据库恢复到原始状态。

步骤如下:

  1. 以某种方式创建备份
  2. 执行测试
  3. 从备份中恢复数据

第一个版本非常简单 - 创建表备份然后恢复它。但我们遇到了引用完整性问题。

之后我们决定使用完整的数据库备份,但我不喜欢这个想法。

我们还认为我们可以跟踪所有引用并仅备份需要的表而不是整个数据库。

最后的想法是以某种方式记录我们的操作(插入、更新),然后执行反向操作(删除以进行插入,使用旧数据进行更新以进行更新),但这看起来有点复杂。

可能有其他解决方案吗?

【问题讨论】:

    标签: sql sql-server sql-server-2008 backup


    【解决方案1】:

    实际上,不需要用原生 SQL Server 术语来恢复数据库,也不需要跟踪更改然后将其还原

    您可以使用 ApexSQL Restore - 一个 SQL Server 工具,将本地和本地压缩的 SQL 数据库备份和事务日志备份附加为实时数据库,可通过 SQL Server 访问Management Studio、Visual Studio 或任何其他第三方工具。它允许附加单个或多个完整、差异和事务日志备份

    有关如何在您的场景中使用该工具的更多信息,请查看 Using SQL database backups instead of live databases in a large development team 在线文章

    免责声明:我在 ApexSQL 担任产品支持工程师

    【讨论】:

      【解决方案2】:

      如果您想使用插入和更新对数据库进行最小的更改,最好在事务中进行这些更改,这些更改可以在测试结束时回滚。这样,SQL Server 将自动存储有关您所做更改的信息,并将其恢复到测试开始之前的状态。

      BEGIN TRANSACTIONhttp://technet.microsoft.com/en-us/library/ms188929.aspx

      【讨论】:

        【解决方案3】:

        我认为更好的办法是创建测试数据库。 您还可以为方法创建接口,第一个实现用于真实数据(使用真实数据库),第二个实现用于测试数据库。

        【讨论】:

          【解决方案4】:

          您可以创建数据库快照。

          快照将跟踪测试期间更改的所有更改数据页面。完成后,您可以从快照恢复到之前的状态。

          CREATE DATABASE [test_snaphot1] ON
          ( NAME = test, FILENAME = 
          'e:\SQLServer\Data\test_snapshot1.ss' )
          AS SNAPSHOT OF [test];
          GO
          

          --做你所有的测试

          RESTORE DATABASE [test] from 
          DATABASE_SNAPSHOT = 'test_snaphot1';
          GO
          

          您必须为数据库的每个数据文件创建一个快照文件。因此,如果您有一个包含 4 个数据文件的数据库,那么您的快照语法应该包含 4 个快照文件。

          【讨论】:

            【解决方案5】:

            找到简单的解决方案 - 重命名表。

            算法很简单:

            1. 将表重命名为另一个表,例如“table”到“table-backup”(引用将引用该备份表)
            2. 从“table-backup”创建“table”(“table”不会有任何依赖)
            3. 在应用程序中执行任何操作
            4. 删除包含脏数据的“表”(不会破坏引用完整性)
            5. 将“table-backup”重命名为“table”(将保持引用完整性)。

            谢谢

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-02-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-12-01
              • 2021-12-08
              相关资源
              最近更新 更多