如何验证完整数据库还原是否反映了 SQL Server 中的确切源数据库?

swa*_*eck 7 sql-server restore

我们正在停用旧的 SQL Server 2000 Ent。支持 SQL Server 2008 R2 Ent 的实例。我计划的迁移路径是:

  1. 终止客户端连接 (2000)
  2. 完整备份 (2000)
  3. 还原 (2008 R2)

我被要求提供确凿的证据,证明每笔交易都“成功”,并且数据是 2000 年实例上存在的内容的精确复制。

我希望我可以使用以下文档作为证据:

但是,如果这还不够,我唯一能想到的就是遍历每个数据库的每个表的每一行并计算校验和(在两个实例上)以及获取每个数据库中每个表的行数。

有没有更好的方法来满足“精确副本”验证标准?我也愿意接受更好的文档。

Rem*_*anu 9

当您备份数据库时,源上的最后一个LSN将是 X。如果发生任何活动(例如,包括自动检查点),源 LSN 将前进到 X+n。如果源上发生了任何活动并且没有在备份中捕获,它会在源日志中留下一个印记,位于 LSN X 和 X+n 之间。使用fn_dblog一个可以查看日志并查看是否发生了任何此类活动。

确保备份后不会发生此类活动的一种简单方法是在进行备份后立即将数据库设置为只读。为了防止在备份和更改 read_only 之间发生任何活动,您可以禁用连接或将数据库设置为单用户模式,甚至以单用户模式启动服务器

所以像下面这样的程序应该几乎是防弹的:

  • 以单用户模式重启源服务器 ( -m)
  • 连接并进行备份
  • 将数据库更改为只读
  • 在新服务器上恢复数据库
  • 运行您在新服务器上进行的任何测试
  • 将应用程序连接到新服务器
  • 停用或重新启动旧服务器