在特定日期时间之前找出已提交的事务

问题描述

我们有一个遗留系统。我们正在迁移到新平台。我们于2021年1月6日对生产数据库进行了备份,并在UAT环境中恢复。

查询下面,我们跑去从 UAT 环境中获取生产数据库的备份日期时间。 Reference Article

SELECT 
    [rs].[destination_database_name],[rs].[restore_date],[bs].[backup_start_date],[bs].[backup_finish_date],[bs].[database_name] AS [source_database_name],[bmf].[physical_device_name] AS [backup_file_used_for_restore]
FROM 
    msdb..restorehistory rs
INNER JOIN 
    msdb..backupset bs ON [rs].[backup_set_id] = [bs].[backup_set_id]
INNER JOIN 
    msdb..backupmediafamily bmf ON [bs].[media_set_id] = [bmf].[media_set_id] 
ORDER BY 
    [rs].[restore_date] DESC
destination_database_name 恢复日期 backup_start_date backup_finish_date source_database_name backup_file_used_for_restore
our_DB 2021-01-06 06:02:21.620 2021-01-06 00:12:55.000 2021-01-06 00:39:06.000 our_DB E:\our_DB.bak

在生产数据库中,我们继续处理入站平面文件。我们处理文件并在文件到来时提交它们。

我们想要提取增量平面文件列表,这些文件是在我们进行备份之后出现的并且尚未处理。

那么,我们应该考虑使用 backup_finish_datetime (2021-01-06 00:39:06.000) 还是 backup_start_date (2021-01-06 00:12:55.000) 从生产中获取增量文件

解决方法

考虑到在备份完成时间确定已提交事务和正在进行的事务所涉及的复杂性,我们决定不将备份完成时间作为增量时间。

我们决定从当天开始(2021-01-06 00:00:00.000)开始使用所有增量增量文件,我们知道会有一些重复的条目,我们必须在新的系统。

由于我们没有审计列,我们决定采用此选项。它突出了审计列的重要性。